Skip to content

Commit a9fc146

Browse files
committed
Strengthen OAuth2 tests
1 parent fbc8352 commit a9fc146

File tree

1 file changed

+49
-3
lines changed

1 file changed

+49
-3
lines changed

src/test/java/com/rabbitmq/client/amqp/impl/Oauth2Test.java

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,47 @@ void validTokenShouldSucceed() {
8585
}
8686

8787
@Test
88-
@BrokerVersionAtLeast(RABBITMQ_4_1_0)
8988
void connectionShouldBeClosedWhenTokenExpires(TestInfo info) {
89+
String q = name(info);
90+
long expiry = currentTimeMillis() + ofSeconds(2).toMillis();
91+
String token = token(expiry);
92+
Sync connectionClosedSync = sync();
93+
Connection c =
94+
environment
95+
.connectionBuilder()
96+
.username("")
97+
.password(token)
98+
.listeners(closedOnSecurityExceptionListener(connectionClosedSync))
99+
.build();
100+
c.management().queue(q).exclusive(true).declare();
101+
Sync publisherClosedSync = sync();
102+
Publisher p =
103+
c.publisherBuilder()
104+
.queue(q)
105+
.listeners(closedOnSecurityExceptionListener(publisherClosedSync))
106+
.build();
107+
Sync consumeSync = sync();
108+
Sync consumerClosedSync = sync();
109+
c.consumerBuilder()
110+
.queue(q)
111+
.messageHandler(
112+
(ctx, msg) -> {
113+
ctx.accept();
114+
consumeSync.down();
115+
})
116+
.listeners(closedOnSecurityExceptionListener(consumerClosedSync))
117+
.build();
118+
p.publish(p.message(), ctx -> {});
119+
assertThat(consumeSync).completes();
120+
waitAtMost(() -> currentTimeMillis() > expiry + ofMillis(500).toMillis());
121+
assertThat(connectionClosedSync).completes();
122+
assertThat(publisherClosedSync).completes();
123+
assertThat(consumerClosedSync).completes();
124+
}
125+
126+
@Test
127+
@BrokerVersionAtLeast(RABBITMQ_4_1_0)
128+
void connectionShouldBeClosedWhenRefreshedTokenExpires(TestInfo info) {
90129
String q = name(info);
91130
long expiry = currentTimeMillis() + ofSeconds(2).toMillis();
92131
String token = token(expiry);
@@ -170,9 +209,10 @@ void tokenShouldBeRefreshedAutomatically(boolean shared, TestInfo info) throws E
170209
int expectedRefreshCount = shared ? refreshRounds : refreshRounds * connectionCount;
171210
Sync tokenRequestSync = sync(expectedRefreshCount);
172211
AtomicInteger refreshCount = new AtomicInteger();
212+
Duration tokenLifetime = ofSeconds(3);
173213
HttpHandler httpHandler =
174214
oAuth2TokenHttpHandler(
175-
() -> currentTimeMillis() + 3_000,
215+
() -> currentTimeMillis() + tokenLifetime.toMillis(),
176216
() -> {
177217
refreshCount.incrementAndGet();
178218
tokenRequestSync.down();
@@ -223,21 +263,25 @@ void tokenShouldBeRefreshedAutomatically(boolean shared, TestInfo info) throws E
223263
expectMessages.run();
224264

225265
assertThat(tokenRequestSync).completes();
266+
Thread.sleep(tokenLifetime.toMillis());
226267

227268
publish.run();
228269
expectMessages.run();
229270
}
230271
}
231272

232273
@Test
274+
@BrokerVersionAtLeast(RABBITMQ_4_1_0)
233275
void tokenOnHttpsShouldBeRefreshed(TestInfo info) throws Exception {
234276
KeyStore keyStore = generateKeyPair();
235277

236278
Sync tokenRefreshedSync = sync(3);
237279
int port = randomNetworkPort();
238280
String contextPath = "/uaa/oauth/token";
281+
Duration tokenLifetime = ofSeconds(3);
239282
HttpHandler httpHandler =
240-
oAuth2TokenHttpHandler(() -> currentTimeMillis() + 3_000, tokenRefreshedSync::down);
283+
oAuth2TokenHttpHandler(
284+
() -> currentTimeMillis() + tokenLifetime.toMillis(), tokenRefreshedSync::down);
241285
this.server = startServer(port, contextPath, keyStore, httpHandler);
242286

243287
SSLContext sslContext = SSLContext.getInstance("TLS");
@@ -278,8 +322,10 @@ void tokenOnHttpsShouldBeRefreshed(TestInfo info) throws Exception {
278322
assertThat(consumeSync).completes();
279323

280324
assertThat(tokenRefreshedSync).completes();
325+
Thread.sleep(tokenLifetime.toMillis());
281326

282327
consumeSync.reset();
328+
283329
publisher.publish(publisher.message(), ctx -> {});
284330
assertThat(consumeSync).completes();
285331
}

0 commit comments

Comments
 (0)