@Override public void expireSession(ServerWebExchange exchange) { this.setSessionId(exchange, ""); }
@Bean WebSessionIdResolver alternateWebSessionIdResolver() { return new HeaderWebSessionIdResolver(); } }
@Override public void setSessionId(ServerWebExchange exchange, String id) { Assert.notNull(id, "'id' is required."); exchange.getResponse().getHeaders().set(getHeaderName(), id); }
@Test public void setSessionIdWhenCustomHeaderNameThenSetsHeader() { String headerName = "x-auth"; String id = "123"; this.idResolver.setHeaderName(headerName); this.idResolver.setSessionId(this.exchange, id); assertEquals(Arrays.asList(id), this.exchange.getResponse().getHeaders().get(headerName)); }
@Test public void expireWhenAfterSetSessionIdThenSetsEmptyHeader() { this.idResolver.setSessionId(this.exchange, "123"); this.idResolver.expireSession(this.exchange); assertEquals(Arrays.asList(""), this.exchange.getResponse().getHeaders().get(HeaderWebSessionIdResolver.DEFAULT_HEADER_NAME)); }
@Bean public WebSessionIdResolver webSessionIdResolver() { HeaderWebSessionIdResolver resolver = new HeaderWebSessionIdResolver(); resolver.setHeaderName("X-AUTH-TOKEN"); return resolver; } }
@Test public void resolveSessionIdsWhenNoIdsThenEmpty() { List<String> ids = this.idResolver.resolveSessionIds(this.exchange); assertTrue(ids.isEmpty()); }
@Test public void expireWhenMultipleInvocationThenSetsSingleEmptyHeader() { this.idResolver.expireSession(this.exchange); this.idResolver.expireSession(this.exchange); assertEquals(Arrays.asList(""), this.exchange.getResponse().getHeaders().get(HeaderWebSessionIdResolver.DEFAULT_HEADER_NAME)); }
@Test public void resolveSessionIdsWhenIdThenIdFound() { String id = "123"; this.exchange = MockServerWebExchange.from(MockServerHttpRequest.get("/path") .header(HeaderWebSessionIdResolver.DEFAULT_HEADER_NAME, id)); List<String> ids = this.idResolver.resolveSessionIds(this.exchange); assertEquals(Arrays.asList(id), ids); }
@Test public void expireWhenValidThenSetsEmptyHeader() { this.idResolver.expireSession(this.exchange); assertEquals(Arrays.asList(""), this.exchange.getResponse().getHeaders().get(HeaderWebSessionIdResolver.DEFAULT_HEADER_NAME)); }
@Override public void expireSession(ServerWebExchange exchange) { this.setSessionId(exchange, ""); }
@Override public List<String> resolveSessionIds(ServerWebExchange exchange) { HttpHeaders headers = exchange.getRequest().getHeaders(); return headers.getOrDefault(getHeaderName(), Collections.emptyList()); }
@Before public void setUp() { this.idResolver = new HeaderWebSessionIdResolver(); this.exchange = MockServerWebExchange.from(MockServerHttpRequest.get("/path")); }
@Test public void resolveSessionIdsWhenMultipleIdsThenIdsFound() { String id1 = "123"; String id2 = "abc"; this.exchange = MockServerWebExchange.from( MockServerHttpRequest.get("/path") .header(HeaderWebSessionIdResolver.DEFAULT_HEADER_NAME, id1, id2)); List<String> ids = this.idResolver.resolveSessionIds(this.exchange); assertEquals(Arrays.asList(id1, id2), ids); } }
@Test(expected = IllegalArgumentException.class) public void setSessionIdWhenNullIdThenIllegalArgumentException() { String id = null; this.idResolver.setSessionId(this.exchange, id); }
@Override public void setSessionId(ServerWebExchange exchange, String id) { Assert.notNull(id, "'id' is required."); exchange.getResponse().getHeaders().set(getHeaderName(), id); }
@Test public void setSessionIdWhenMultipleThenSetsSingleHeader() { String id = "123"; this.idResolver.setSessionId(this.exchange, "overriddenByNextInvocation"); this.idResolver.setSessionId(this.exchange, id); assertEquals(Arrays.asList(id), this.exchange.getResponse().getHeaders().get(HeaderWebSessionIdResolver.DEFAULT_HEADER_NAME)); }
@Override public List<String> resolveSessionIds(ServerWebExchange exchange) { HttpHeaders headers = exchange.getRequest().getHeaders(); return headers.getOrDefault(getHeaderName(), Collections.emptyList()); }
@Test public void setSessionIdWhenValidThenSetsHeader() { String id = "123"; this.idResolver.setSessionId(this.exchange, id); assertEquals(Arrays.asList(id), this.exchange.getResponse().getHeaders().get(HeaderWebSessionIdResolver.DEFAULT_HEADER_NAME)); }
@Override public void setSessionId(ServerWebExchange exchange, String id) { Assert.notNull(id, "'id' is required."); exchange.getResponse().getHeaders().set(getHeaderName(), id); }