public void applicationIssuedRefreshTokenToCreatePermissionRequest()

in component-test/src/main/java/TestApplications.java [325:387]


  public void applicationIssuedRefreshTokenToCreatePermissionRequest() throws InterruptedException {
    final ApplicationSignatureTestData appPlusSig;
    try (final AutoUserContext ignored
                 = tenantApplicationSecurityEnvironment.createAutoSeshatContext()) {
      appPlusSig = setApplicationSignature();
      createApplicationPermission(appPlusSig.getApplicationIdentifier(), buildApplicationSelfPermission());
    }

    final String userid;
    final String userid2;
    final String userPassword;
    try (final AutoUserContext ignored = loginAdmin()) {

      final String roleId = createApplicationSelfManagementRole();

      userPassword = RandomStringUtils.randomAlphanumeric(5);
      userid = createUserWithNonexpiredPassword(userPassword, roleId);
      userid2 = createUserWithNonexpiredPassword(userPassword, roleId);

    }

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


    final TokenSerializationResult tokenSerializationResult =
            new TenantRefreshTokenSerializer().build(new TenantRefreshTokenSerializer.Specification()
                    .setUser(userid)
                    .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 Permission rolePermission = buildRolePermission();
      createApplicationPermission(appPlusSig.getApplicationIdentifier(), rolePermission);

      final List<Permission> appPermissions = getTestSubject().getApplicationPermissions(
              appPlusSig.getApplicationIdentifier());

      Assert.assertTrue(appPermissions.contains(rolePermission));

      try {
        getTestSubject().setApplicationPermissionEnabledForUser(appPlusSig.getApplicationIdentifier(), rolePermission.getPermittableEndpointGroupIdentifier(), userid2, true);
        Assert.fail("This call to create enable permission for another user should've failed.");
      }
      catch (final NotFoundException ignored2) {

      }

      try {
        createApplicationPermission("madeupname-v1", rolePermission);
        Assert.fail("This call to create application permission should've failed.");
      }
      catch (final NotFoundException ignored2) {

      }
    }
  }