Skip to content
代码片段 群组 项目
未验证 提交 c202344d 编辑于 作者: Brennan's avatar Brennan 提交者: GitHub
浏览文件

[Java] Test accessTokenProvider usage (#23751)

上级 bbc11625
No related branches found
No related tags found
无相关合并请求
......@@ -2118,6 +2118,37 @@ class HubConnectionTest {
assertEquals("Bearer secretToken", token.get());
}
@Test
public void AccessTokenProviderCanProvideDifferentValues() {
AtomicReference<String> token = new AtomicReference<>();
TestHttpClient client = new TestHttpClient()
.on("POST", "http://example.com/negotiate?negotiateVersion=1",
(req) -> {
token.set(req.getHeaders().get("Authorization"));
return Single.just(new HttpResponse(200, "", "{\"connectionId\":\"bVOiRPG8-6YiJ6d7ZcTOVQ\",\""
+ "availableTransports\":[{\"transport\":\"WebSockets\",\"transferFormats\":[\"Text\",\"Binary\"]}]}"));
});
AtomicInteger i = new AtomicInteger(0);
MockTransport transport = new MockTransport(true);
HubConnection hubConnection = HubConnectionBuilder
.create("http://example.com")
.withTransportImplementation(transport)
.withHttpClient(client)
.withAccessTokenProvider(Single.defer(() -> Single.just("secret" + i.getAndIncrement())))
.build();
hubConnection.start().timeout(1, TimeUnit.SECONDS).blockingAwait();
assertEquals(HubConnectionState.CONNECTED, hubConnection.getConnectionState());
hubConnection.stop().timeout(1, TimeUnit.SECONDS).blockingAwait();
assertEquals("Bearer secret0", token.get());
hubConnection.start().timeout(1, TimeUnit.SECONDS).blockingAwait();
assertEquals(HubConnectionState.CONNECTED, hubConnection.getConnectionState());
hubConnection.stop().timeout(1, TimeUnit.SECONDS).blockingAwait();
assertEquals("Bearer secret1", token.get());
}
@Test
public void accessTokenProviderIsOverriddenFromRedirectNegotiate() {
AtomicReference<String> token = new AtomicReference<>();
......
......@@ -263,6 +263,42 @@ public class LongPollingTransportTest {
close.onComplete();
}
@Test
public void LongPollingTransportRunsAccessTokenProviderEveryRequest() {
AtomicInteger requestCount = new AtomicInteger();
AtomicReference<String> headerValue = new AtomicReference<>();
CompletableSubject secondGet = CompletableSubject.create();
CompletableSubject close = CompletableSubject.create();
TestHttpClient client = new TestHttpClient()
.on("GET", (req) -> {
if (requestCount.get() == 0) {
requestCount.incrementAndGet();
return Single.just(new HttpResponse(200, "", ""));
}
assertEquals("Bearer TOKEN1", req.getHeaders().get("Authorization"));
secondGet.onComplete();
assertTrue(close.blockingAwait(1, TimeUnit.SECONDS));
return Single.just(new HttpResponse(204, "", ""));
})
.on("POST", (req) -> {
assertFalse(req.getHeaders().isEmpty());
headerValue.set(req.getHeaders().get("Authorization"));
return Single.just(new HttpResponse(200, "", ""));
});
AtomicInteger i = new AtomicInteger(0);
Map<String, String> headers = new HashMap<>();
Single<String> tokenProvider = Single.defer(() -> Single.just("TOKEN" + i.getAndIncrement()));
LongPollingTransport transport = new LongPollingTransport(headers, client, tokenProvider);
transport.setOnClose((error) -> {});
transport.start("http://example.com").timeout(1, TimeUnit.SECONDS).blockingAwait();
secondGet.blockingAwait(1, TimeUnit.SECONDS);
assertTrue(transport.send("TEST").blockingAwait(1, TimeUnit.SECONDS));
assertEquals("Bearer TOKEN2", headerValue.get());
close.onComplete();
}
@Test
public void After204StopDoesNotTriggerOnClose() {
AtomicBoolean firstPoll = new AtomicBoolean(true);
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册