blob: 9e2311be6fb181d2ddf1c509fc45c5dc3764f94a [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.nifi.authorization;
import org.junit.jupiter.api.Test;
import java.util.HashSet;
import java.util.Set;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class TestGroup {
@Test
public void testSimpleCreation() {
final String id = "1";
final String name = "group1";
final String user1 = "user1";
final String user2 = "user2";
final Group group = new Group.Builder()
.identifier(id)
.name(name)
.addUser(user1)
.addUser(user2)
.build();
assertEquals(id, group.getIdentifier());
assertEquals(name, group.getName());
assertNotNull(group.getUsers());
assertEquals(2, group.getUsers().size());
assertTrue(group.getUsers().contains(user1));
assertTrue(group.getUsers().contains(user2));
}
@Test
public void testMissingId() {
assertThrows(IllegalArgumentException.class, () -> new Group.Builder()
.name("group1")
.addUser("user1")
.addUser("user2")
.build());
}
@Test
public void testMissingName() {
assertThrows(IllegalArgumentException.class, () -> new Group.Builder()
.identifier("1")
.addUser("user1")
.addUser("user2")
.build());
}
@Test
public void testMissingUsers() {
final String id = "1";
final String name = "group1";
final Group group = new Group.Builder()
.identifier(id)
.name(name)
.build();
assertEquals(id, group.getIdentifier());
assertEquals(name, group.getName());
assertNotNull(group.getUsers());
assertEquals(0, group.getUsers().size());
}
@Test
public void testFromGroup() {
final String id = "1";
final String name = "group1";
final String user1 = "user1";
final String user2 = "user2";
final Group group1 = new Group.Builder()
.identifier(id)
.name(name)
.addUser(user1)
.addUser(user2)
.build();
assertEquals(id, group1.getIdentifier());
assertEquals(name, group1.getName());
assertNotNull(group1.getUsers());
assertEquals(2, group1.getUsers().size());
assertTrue(group1.getUsers().contains(user1));
assertTrue(group1.getUsers().contains(user2));
final Group group2 = new Group.Builder(group1).build();
assertEquals(group1.getIdentifier(), group2.getIdentifier());
assertEquals(group1.getName(), group2.getName());
assertEquals(group1.getUsers(), group2.getUsers());
}
@Test
public void testFromGroupAndChangeIdentifier() {
final Group group1 = new Group.Builder()
.identifier("1")
.name("group1")
.addUser("user1")
.build();
assertThrows(IllegalStateException.class, () -> new Group.Builder(group1).identifier("2").build());
}
@Test
public void testAddRemoveClearUsers() {
final Group.Builder builder = new Group.Builder()
.identifier("1")
.name("group1")
.addUser("user1");
final Group group1 = builder.build();
assertNotNull(group1.getUsers());
assertEquals(1, group1.getUsers().size());
assertTrue(group1.getUsers().contains("user1"));
final Set<String> moreUsers = new HashSet<>();
moreUsers.add("user2");
moreUsers.add("user3");
moreUsers.add("user4");
final Group group2 = builder.addUsers(moreUsers).build();
assertEquals(4, group2.getUsers().size());
assertTrue(group2.getUsers().contains("user1"));
assertTrue(group2.getUsers().contains("user2"));
assertTrue(group2.getUsers().contains("user3"));
assertTrue(group2.getUsers().contains("user4"));
final Group group3 = builder.removeUser("user2").build();
assertEquals(3, group3.getUsers().size());
assertTrue(group3.getUsers().contains("user1"));
assertTrue(group3.getUsers().contains("user3"));
assertTrue(group3.getUsers().contains("user4"));
final Set<String> removeUsers = new HashSet<>();
removeUsers.add("user1");
removeUsers.add("user4");
final Group group4 = builder.removeUsers(removeUsers).build();
assertEquals(1, group4.getUsers().size());
assertTrue(group4.getUsers().contains("user3"));
final Group group5 = builder.clearUsers().build();
assertEquals(0, group5.getUsers().size());
}
}