1 package org.apache.archiva.security;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.archiva.security.common.ArchivaRoleConstants;
23 import org.apache.commons.lang.StringUtils;
24 import org.junit.After;
25 import org.junit.Before;
26 import org.junit.Test;
27
28 import java.util.List;
29
30
31
32
33
34
35 public class DefaultUserRepositoriesTest
36 extends AbstractSecurityTest
37 {
38
39
40 @Before
41 @Override
42 public void setUp()
43 throws Exception
44 {
45 super.setUp();
46 restoreGuestInitialValues( USER_ALPACA );
47 restoreGuestInitialValues( USER_GUEST );
48 restoreGuestInitialValues( USER_ADMIN );
49 }
50
51 @Test
52 public void testGetObservableRepositoryIds()
53 throws Exception
54 {
55
56 createUser( USER_ALPACA, "Al 'Archiva' Paca" );
57
58 assertEquals( "Expected users", 3, securitySystem.getUserManager().getUsers().size() );
59
60
61 setupRepository( "central" );
62 setupRepository( "corporate" );
63 setupRepository( "internal" );
64 setupRepository( "snapshots" );
65 setupRepository( "secret" );
66
67
68 assignRepositoryObserverRole( USER_ALPACA, "corporate" );
69 assignRepositoryObserverRole( USER_ALPACA, "central" );
70 assignRepositoryObserverRole( USER_GUEST, "corporate" );
71
72 assignGlobalRepositoryObserverRole( USER_ADMIN );
73
74 assertRepoIds( new String[]{ "central", "corporate" }, userRepos.getObservableRepositoryIds( USER_ALPACA ) );
75 assertRepoIds( new String[]{ "coporate" }, userRepos.getObservableRepositoryIds( USER_GUEST ) );
76 assertRepoIds( new String[]{ "central", "internal", "corporate", "snapshots", "secret" },
77 userRepos.getObservableRepositoryIds( USER_ADMIN ) );
78
79 }
80
81 @After
82 @Override
83 public void tearDown()
84 throws Exception
85 {
86 super.tearDown();
87 restoreGuestInitialValues( USER_ALPACA );
88 restoreGuestInitialValues( USER_GUEST );
89 restoreGuestInitialValues( USER_ADMIN );
90 }
91
92 private void assertRepoIds( String[] expectedRepoIds, List<String> observableRepositoryIds )
93 {
94 assertNotNull( "Observable Repository Ids cannot be null.", observableRepositoryIds );
95
96 if ( expectedRepoIds.length != observableRepositoryIds.size() )
97 {
98 fail( "Size of Observable Repository Ids wrong, expected <" + expectedRepoIds.length + "> but got <"
99 + observableRepositoryIds.size() + "> instead. \nExpected: ["
100 + StringUtils.join( expectedRepoIds, "," ) + "]\nActual: ["
101 + StringUtils.join( observableRepositoryIds.iterator(), "," ) + "]" );
102 }
103 }
104
105 private void assignGlobalRepositoryObserverRole( String principal )
106 throws Exception
107 {
108 roleManager.assignRole( ArchivaRoleConstants.TEMPLATE_GLOBAL_REPOSITORY_OBSERVER, principal );
109 }
110 }