javax.ws.rs.container.ContainerRequestFilter#filter ( )源码实例Demo

下面列出了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)));
}
 
 同类方法