View Javadoc
1   package net.avcompris.examples.users3.core.tests;
2   
3   import static net.avcompris.commons3.core.tests.CoreTestUtils.defaultClock;
4   import static net.avcompris.commons3.core.tests.CoreTestUtils.newCorrelationId;
5   import static net.avcompris.commons3.core.tests.CoreTestUtils.random40;
6   import static net.avcompris.commons3.databeans.DataBeans.instantiate;
7   import static net.avcompris.examples.users3.core.tests.UsersCoreTestUtils.ensureAnyUser;
8   import static net.avcompris.examples.users3.core.tests.UsersCoreTestUtils.setCorrelationId;
9   import static net.avcompris.examples.users3.core.tests.UsersCoreTestUtils.setUsersService;
10  import static org.junit.jupiter.api.Assertions.assertThrows;
11  
12  import org.apache.commons.lang3.tuple.Pair;
13  import org.junit.jupiter.api.BeforeEach;
14  import org.junit.jupiter.api.Test;
15  
16  import net.avcompris.commons3.api.User;
17  import net.avcompris.commons3.api.exception.UnauthorizedException;
18  import net.avcompris.commons3.core.Permissions;
19  import net.avcompris.commons3.core.impl.PermissionsImpl;
20  import net.avcompris.commons3.core.tests.AbstractServiceTest;
21  import net.avcompris.commons3.utils.LogFactory;
22  import net.avcompris.examples.shared3.Role;
23  import net.avcompris.examples.users3.api.UserCreate;
24  import net.avcompris.examples.users3.core.api.UsersService;
25  import net.avcompris.examples.users3.core.impl.UsersServiceImpl;
26  import net.avcompris.examples.users3.dao.AuthDao;
27  import net.avcompris.examples.users3.dao.UsersDao;
28  
29  public abstract class AbstractUsersServicePermissionsTest extends AbstractServiceTest<Pair<UsersDao, AuthDao>> {
30  
31  	protected UsersService usersService;
32  
33  	private String correlationId;
34  
35  	@BeforeEach
36  	public final void setUpBeans() throws Exception {
37  
38  		final Pair<UsersDao, AuthDao> beans = getBeans(defaultClock());
39  
40  		final UsersDao usersDao = beans.getLeft();
41  		final AuthDao authDao = beans.getRight();
42  
43  		final Permissions permissions = new PermissionsImpl();
44  
45  		usersService = new UsersServiceImpl(permissions, defaultClock(), usersDao, authDao);
46  
47  		setUsersService(usersService);
48  
49  		LogFactory.resetCorrelationId();
50  
51  		correlationId = setCorrelationId(newCorrelationId());
52  	}
53  
54  	@Test
55  	public final void test_Usermgr_can_createUsermgrUser() throws Exception {
56  
57  		final User user0 = ensureAnyUser(Role.USERMGR);
58  
59  		usersService.createUser(correlationId, user0, random40("USER-"), instantiate(UserCreate.class) //
60  				.setEnabled(true) //
61  				.setRole(Role.USERMGR));
62  	}
63  
64  	@Test
65  	public final void test_Admin_can_createAdminUser() throws Exception {
66  
67  		final User user0 = ensureAnyUser(Role.ADMIN);
68  
69  		usersService.createUser(correlationId, user0, random40("USER-"), instantiate(UserCreate.class) //
70  				.setEnabled(true) //
71  				.setRole(Role.ADMIN));
72  	}
73  
74  	@Test
75  	public final void test_Admin_can_createUsermgrUser() throws Exception {
76  
77  		final User user0 = ensureAnyUser(Role.ADMIN);
78  
79  		usersService.createUser(correlationId, user0, random40("USER-"), instantiate(UserCreate.class) //
80  				.setEnabled(true) //
81  				.setRole(Role.USERMGR));
82  	}
83  
84  	@Test
85  	public final void test_Usermgr_cannot_createAdminUser() throws Exception {
86  
87  		final User user0 = ensureAnyUser(Role.USERMGR);
88  
89  		assertThrows(UnauthorizedException.class, ()
90  
91  		-> usersService.createUser(correlationId, user0, random40("USER-"), instantiate(UserCreate.class) //
92  				.setEnabled(true) //
93  				.setRole(Role.ADMIN)));
94  	}
95  }