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