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.servlet;
25
26 import static org.assertj.core.api.Assertions.assertThat;
27
28 import java.io.IOException;
29 import java.nio.charset.StandardCharsets;
30 import java.util.Base64;
31
32 import javax.security.auth.Subject;
33 import javax.servlet.FilterChain;
34 import javax.servlet.ServletException;
35
36 import org.junit.jupiter.api.AfterEach;
37 import org.junit.jupiter.api.Assertions;
38 import org.junit.jupiter.api.BeforeEach;
39 import org.junit.jupiter.api.Test;
40
41 import waffle.mock.MockWindowsAuthProvider;
42 import waffle.mock.http.SimpleFilterChain;
43 import waffle.mock.http.SimpleHttpRequest;
44 import waffle.mock.http.SimpleHttpResponse;
45 import waffle.windows.auth.impl.WindowsAccountImpl;
46
47
48
49
50 class BasicSecurityFilterTest {
51
52
53 private NegotiateSecurityFilter filter;
54
55
56
57
58
59
60
61 @BeforeEach
62 void setUp() throws ServletException {
63 this.filter = new NegotiateSecurityFilter();
64 this.filter.setAuth(new MockWindowsAuthProvider());
65 this.filter.init(null);
66 }
67
68
69
70
71 @AfterEach
72 void tearDown() {
73 this.filter.destroy();
74 }
75
76
77
78
79
80
81
82
83
84 @Test
85 void testBasicAuth() throws IOException, ServletException {
86 final SimpleHttpRequest request = new SimpleHttpRequest();
87 request.setMethod("GET");
88
89 final String userHeaderValue = WindowsAccountImpl.getCurrentUsername() + ":password";
90 final String basicAuthHeader = "Basic "
91 + Base64.getEncoder().encodeToString(userHeaderValue.getBytes(StandardCharsets.UTF_8));
92 request.addHeader("Authorization", basicAuthHeader);
93
94 final SimpleHttpResponse response = new SimpleHttpResponse();
95 final FilterChain filterChain = new SimpleFilterChain();
96 this.filter.doFilter(request, response, filterChain);
97 final Subject subject = (Subject) request.getSession(false).getAttribute("javax.security.auth.subject");
98 Assertions.assertNotNull(subject);
99 assertThat(subject.getPrincipals().size()).isPositive();
100 }
101 }