下面列出了javax.ws.rs.container.ContainerRequestFilter#filter ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Test
public void customPrincipalFunctionUserInfo() throws Exception {
final Key<String> userInfoKey = newKey("basicPrincipal");
final ContainerRequestFilter filter = newFilterBuilder(userInfoKey)
.principalFunction((__, userInfo) -> TEST_USER_INFO.equals(userInfo) ? TEST_PRINCIPAL : null)
.build();
filter.filter(requestCtx);
verifyZeroInteractions(requestCtx);
AsyncContext.put(userInfoKey, TEST_USER_INFO);
final ArgumentCaptor<SecurityContext> securityCtxCaptor = ArgumentCaptor.forClass(SecurityContext.class);
filter.filter(requestCtx);
verify(requestCtx).setSecurityContext(securityCtxCaptor.capture());
assertThat(securityCtxCaptor.getValue().getUserPrincipal(), is(sameInstance(TEST_PRINCIPAL)));
}
@Test
public void customSecurityContextFunctionUserInfo() throws Exception {
final SecurityContext securityContext = mock(SecurityContext.class);
final Key<String> userInfoKey = newKey("basicPrincipal");
final ContainerRequestFilter filter = newFilterBuilder(userInfoKey)
.securityContextFunction((__, userInfo) -> TEST_USER_INFO.equals(userInfo) ? securityContext : null)
.build();
filter.filter(requestCtx);
verifyZeroInteractions(requestCtx);
AsyncContext.put(userInfoKey, TEST_USER_INFO);
final ArgumentCaptor<SecurityContext> securityCtxCaptor = ArgumentCaptor.forClass(SecurityContext.class);
filter.filter(requestCtx);
verify(requestCtx).setSecurityContext(securityCtxCaptor.capture());
assertThat(securityCtxCaptor.getValue(), is(sameInstance(securityContext)));
}
@Test
public void principalNoUserInfo() throws Exception {
final ContainerRequestFilter filter = newFilterBuilder().build();
final ArgumentCaptor<SecurityContext> securityCtxCaptor = ArgumentCaptor.forClass(SecurityContext.class);
filter.filter(requestCtx);
verify(requestCtx).setSecurityContext(securityCtxCaptor.capture());
assertThat(securityCtxCaptor.getValue().getUserPrincipal(), is(sameInstance(ANONYMOUS_PRINCIPAL)));
}
@Test
public void principalUserInfo() throws Exception {
final Key<Principal> userInfoKey = newKey("basicPrincipal");
final ContainerRequestFilter filter = newFilterBuilder(userInfoKey).build();
filter.filter(requestCtx);
verifyZeroInteractions(requestCtx);
AsyncContext.put(userInfoKey, TEST_PRINCIPAL);
final ArgumentCaptor<SecurityContext> securityCtxCaptor = ArgumentCaptor.forClass(SecurityContext.class);
filter.filter(requestCtx);
verify(requestCtx).setSecurityContext(securityCtxCaptor.capture());
assertThat(securityCtxCaptor.getValue().getUserPrincipal(), is(sameInstance(TEST_PRINCIPAL)));
}
@Test
public void customPrincipalFunctionNoUserInfo() throws Exception {
final ContainerRequestFilter filter = newFilterBuilder()
.principalFunction(__ -> TEST_PRINCIPAL)
.build();
final ArgumentCaptor<SecurityContext> securityCtxCaptor = ArgumentCaptor.forClass(SecurityContext.class);
filter.filter(requestCtx);
verify(requestCtx).setSecurityContext(securityCtxCaptor.capture());
assertThat(securityCtxCaptor.getValue().getUserPrincipal(), is(sameInstance(TEST_PRINCIPAL)));
}
@Test
public void customSecurityContextFunctionNoUserInfo() throws Exception {
final SecurityContext securityContext = mock(SecurityContext.class);
final ContainerRequestFilter filter = newFilterBuilder()
.securityContextFunction(__ -> securityContext)
.build();
final ArgumentCaptor<SecurityContext> securityCtxCaptor = ArgumentCaptor.forClass(SecurityContext.class);
filter.filter(requestCtx);
verify(requestCtx).setSecurityContext(securityCtxCaptor.capture());
assertThat(securityCtxCaptor.getValue(), is(sameInstance(securityContext)));
}