1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package waffle.spring;
25
26 import java.util.ArrayList;
27 import java.util.Collection;
28 import java.util.Collections;
29 import java.util.List;
30
31 import org.junit.jupiter.api.Assertions;
32 import org.junit.jupiter.api.BeforeEach;
33 import org.junit.jupiter.api.Test;
34 import org.springframework.security.core.GrantedAuthority;
35
36 import waffle.mock.MockWindowsIdentity;
37 import waffle.servlet.WindowsPrincipal;
38
39
40
41
42 class WindowsAuthenticationTokenTest {
43
44
45 private WindowsPrincipal principal;
46
47
48 private WindowsAuthenticationToken token;
49
50
51
52
53 @BeforeEach
54 void setUp() {
55 final List<String> mockGroups = new ArrayList<>();
56 mockGroups.add("group1");
57 mockGroups.add("group2");
58 final MockWindowsIdentity mockIdentity = new MockWindowsIdentity("localhost\\user1", mockGroups);
59 this.principal = new WindowsPrincipal(mockIdentity);
60 this.token = new WindowsAuthenticationToken(this.principal);
61 }
62
63
64
65
66 @Test
67 void testWindowsAuthenticationToken() {
68 Assertions.assertNull(this.token.getCredentials());
69 Assertions.assertNull(this.token.getDetails());
70 Assertions.assertTrue(this.token.isAuthenticated());
71 Assertions.assertEquals("localhost\\user1", this.token.getName());
72 final Collection<GrantedAuthority> authorities = this.token.getAuthorities();
73 Assertions.assertEquals(3, authorities.size());
74
75 final List<String> list = new ArrayList<>();
76 for (final GrantedAuthority grantedAuthority : authorities) {
77 list.add(grantedAuthority.getAuthority());
78 }
79 Collections.sort(list);
80 Assertions.assertEquals("ROLE_GROUP1", list.get(0));
81 Assertions.assertEquals("ROLE_GROUP2", list.get(1));
82 Assertions.assertEquals("ROLE_USER", list.get(2));
83 Assertions.assertEquals(this.principal, this.token.getPrincipal());
84 }
85
86
87
88
89 @Test
90 void testCustomGrantedAuthorityFactory() {
91
92 final WindowsAuthenticationToken myToken = new WindowsAuthenticationToken(this.principal,
93 new FqnGrantedAuthorityFactory(null, false), null);
94
95 Assertions.assertNull(myToken.getCredentials());
96 Assertions.assertNull(myToken.getDetails());
97 Assertions.assertTrue(myToken.isAuthenticated());
98 Assertions.assertEquals("localhost\\user1", myToken.getName());
99 final Collection<GrantedAuthority> authorities = myToken.getAuthorities();
100 Assertions.assertEquals(2, authorities.size());
101
102 final List<String> list = new ArrayList<>();
103 for (final GrantedAuthority grantedAuthority : authorities) {
104 list.add(grantedAuthority.getAuthority());
105 }
106 Collections.sort(list);
107 Assertions.assertEquals("group1", list.get(0));
108 Assertions.assertEquals("group2", list.get(1));
109 Assertions.assertEquals(this.principal, myToken.getPrincipal());
110 }
111
112
113
114
115 @Test
116 void testAuthenticated() {
117 Assertions.assertTrue(this.token.isAuthenticated());
118 Assertions.assertThrows(IllegalArgumentException.class, () -> {
119 this.token.setAuthenticated(true);
120 });
121 }
122
123 }