Exemplo n.º 1
0
  @Test
  public void canAddNonExistentGroupThroughEvent() throws Exception {
    String[] externalAuthorities = new String[] {"extTest1", "extTest2", "extTest3"};
    String[] userAuthorities = new String[] {"usrTest1", "usrTest2", "usrTest3"};
    String origin = "testOrigin";
    String email = "*****@*****.**";
    String firstName = "FirstName";
    String lastName = "LastName";
    String password = "";
    String externalId = null;
    String userId = new RandomValueStringGenerator().generate();
    String username = new RandomValueStringGenerator().generate();
    UaaUser user =
        getUaaUser(
            userAuthorities,
            origin,
            email,
            firstName,
            lastName,
            password,
            externalId,
            userId,
            username);
    ScimUserBootstrap bootstrap = new ScimUserBootstrap(db, gdb, mdb, Arrays.asList(user));
    bootstrap.afterPropertiesSet();

    List<ScimUser> users =
        db.query("userName eq \"" + username + "\" and origin eq \"" + origin + "\"");
    assertEquals(1, users.size());
    userId = users.get(0).getId();
    user =
        getUaaUser(
            userAuthorities,
            origin,
            email,
            firstName,
            lastName,
            password,
            externalId,
            userId,
            username);
    bootstrap.onApplicationEvent(
        new ExternalGroupAuthorizationEvent(user, getAuthorities(externalAuthorities)));

    users = db.query("userName eq \"" + username + "\" and origin eq \"" + origin + "\"");
    assertEquals(1, users.size());
    ScimUser created = users.get(0);
    Set<ScimGroup> groups = mdb.getGroupsWithMember(created.getId(), true);
    String[] expected = merge(externalAuthorities, userAuthorities);
    String[] actual = getGroupNames(groups);
    assertThat(actual, IsArrayContainingInAnyOrder.arrayContainingInAnyOrder(expected));
  }