public void applicationIssuedRefreshTokenHappyCase()

in component-test/src/main/java/TestApplications.java [262:322]


  public void applicationIssuedRefreshTokenHappyCase() throws InterruptedException {
    final ApplicationSignatureTestData appPlusSig;
    final Permission rolePermission = buildRolePermission();
    final Permission userPermission = buildUserPermission();
    try (final AutoUserContext ignored
                 = tenantApplicationSecurityEnvironment.createAutoSeshatContext()) {
      appPlusSig = setApplicationSignature();

      createApplicationPermission(appPlusSig.getApplicationIdentifier(), rolePermission);
      createApplicationPermission(appPlusSig.getApplicationIdentifier(), userPermission);

      getTestSubject().createApplicationCallEndpointSet(
              appPlusSig.getApplicationIdentifier(),
              new CallEndpointSet(CALL_ENDPOINT_SET_IDENTIFIER,
                      Arrays.asList(rolePermission.getPermittableEndpointGroupIdentifier(),
                              userPermission.getPermittableEndpointGroupIdentifier())));
      Assert.assertTrue(eventRecorder.wait(EventConstants.OPERATION_POST_APPLICATION_CALLENDPOINTSET,
              new ApplicationCallEndpointSetEvent(appPlusSig.getApplicationIdentifier(),
                      CALL_ENDPOINT_SET_IDENTIFIER)));
    }

    final String userid;
    final String userPassword;
    try (final AutoUserContext ignored = loginAdmin()) {
      final String selfManagementRoleId = createRole(rolePermission, userPermission);

      userPassword = RandomStringUtils.randomAlphanumeric(5);
      userid = createUserWithNonexpiredPassword(userPassword, selfManagementRoleId);
    }


    try (final AutoUserContext ignored = loginUser(userid, userPassword)) {
      getTestSubject().setApplicationPermissionEnabledForUser(
              appPlusSig.getApplicationIdentifier(),
              userPermission.getPermittableEndpointGroupIdentifier(),
              userid,
              true);
      getTestSubject().setApplicationPermissionEnabledForUser(
              appPlusSig.getApplicationIdentifier(),
              rolePermission.getPermittableEndpointGroupIdentifier(),
              userid,
              true);
    }

    final TokenSerializationResult tokenSerializationResult =
            new TenantRefreshTokenSerializer().build(new TenantRefreshTokenSerializer.Specification()
                    .setUser(userid)
                    .setEndpointSet(CALL_ENDPOINT_SET_IDENTIFIER)
                    .setSecondsToLive(30)
                    .setKeyTimestamp(appPlusSig.getKeyTimestamp())
                    .setPrivateKey(appPlusSig.getKeyPair().privateKey())
                    .setSourceApplication(appPlusSig.getApplicationIdentifier()));


    final Authentication applicationAuthentication = getTestSubject().refresh(tokenSerializationResult.getToken());

    try (final AutoUserContext ignored = new AutoUserContext(userid, applicationAuthentication.getAccessToken())) {
      final List<User> users = getTestSubject().getUsers();
      Assert.assertFalse(users.isEmpty());
    }
  }