mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-07-12 21:33:30 +00:00
Repair Flaky Tests
The error between MockWebServer and OpenSAML still happens on occasion. This commit uses MockWebServer's default queue dispatcher to remove any customization that might be contributing to the flakiness. Issue gh-15395
This commit is contained in:
parent
1118b0ec63
commit
d7138cdb67
@ -90,7 +90,7 @@ public class OpenSaml4AssertingPartyMetadataRepositoryTests {
|
|||||||
@Test
|
@Test
|
||||||
public void withMetadataUrlLocationWhenResolvableThenFindByEntityIdReturns() throws Exception {
|
public void withMetadataUrlLocationWhenResolvableThenFindByEntityIdReturns() throws Exception {
|
||||||
try (MockWebServer server = new MockWebServer()) {
|
try (MockWebServer server = new MockWebServer()) {
|
||||||
server.setDispatcher(new AlwaysDispatch(this.metadata));
|
enqueue(server, this.metadata, 3);
|
||||||
AssertingPartyMetadataRepository parties = OpenSaml4AssertingPartyMetadataRepository
|
AssertingPartyMetadataRepository parties = OpenSaml4AssertingPartyMetadataRepository
|
||||||
.withTrustedMetadataLocation(server.url("/").toString())
|
.withTrustedMetadataLocation(server.url("/").toString())
|
||||||
.build();
|
.build();
|
||||||
@ -107,7 +107,7 @@ public class OpenSaml4AssertingPartyMetadataRepositoryTests {
|
|||||||
@Test
|
@Test
|
||||||
public void withMetadataUrlLocationnWhenResolvableThenIteratorReturns() throws Exception {
|
public void withMetadataUrlLocationnWhenResolvableThenIteratorReturns() throws Exception {
|
||||||
try (MockWebServer server = new MockWebServer()) {
|
try (MockWebServer server = new MockWebServer()) {
|
||||||
server.setDispatcher(new AlwaysDispatch(this.entitiesDescriptor));
|
enqueue(server, this.entitiesDescriptor, 3);
|
||||||
List<AssertingPartyMetadata> parties = new ArrayList<>();
|
List<AssertingPartyMetadata> parties = new ArrayList<>();
|
||||||
OpenSaml4AssertingPartyMetadataRepository.withTrustedMetadataLocation(server.url("/").toString())
|
OpenSaml4AssertingPartyMetadataRepository.withTrustedMetadataLocation(server.url("/").toString())
|
||||||
.build()
|
.build()
|
||||||
@ -122,9 +122,6 @@ public class OpenSaml4AssertingPartyMetadataRepositoryTests {
|
|||||||
@Test
|
@Test
|
||||||
public void withMetadataUrlLocationWhenUnresolvableThenThrowsSaml2Exception() throws Exception {
|
public void withMetadataUrlLocationWhenUnresolvableThenThrowsSaml2Exception() throws Exception {
|
||||||
try (MockWebServer server = new MockWebServer()) {
|
try (MockWebServer server = new MockWebServer()) {
|
||||||
server.enqueue(new MockResponse().setBody(this.metadata)
|
|
||||||
.setResponseCode(200)
|
|
||||||
.setBodyDelay(1, TimeUnit.MILLISECONDS));
|
|
||||||
String url = server.url("/").toString();
|
String url = server.url("/").toString();
|
||||||
server.shutdown();
|
server.shutdown();
|
||||||
assertThatExceptionOfType(Saml2Exception.class)
|
assertThatExceptionOfType(Saml2Exception.class)
|
||||||
@ -135,7 +132,7 @@ public class OpenSaml4AssertingPartyMetadataRepositoryTests {
|
|||||||
@Test
|
@Test
|
||||||
public void withMetadataUrlLocationWhenMalformedResponseThenSaml2Exception() throws Exception {
|
public void withMetadataUrlLocationWhenMalformedResponseThenSaml2Exception() throws Exception {
|
||||||
try (MockWebServer server = new MockWebServer()) {
|
try (MockWebServer server = new MockWebServer()) {
|
||||||
server.setDispatcher(new AlwaysDispatch("malformed"));
|
enqueue(server, "malformed", 3);
|
||||||
String url = server.url("/").toString();
|
String url = server.url("/").toString();
|
||||||
assertThatExceptionOfType(Saml2Exception.class)
|
assertThatExceptionOfType(Saml2Exception.class)
|
||||||
.isThrownBy(() -> OpenSaml4AssertingPartyMetadataRepository.withTrustedMetadataLocation(url).build());
|
.isThrownBy(() -> OpenSaml4AssertingPartyMetadataRepository.withTrustedMetadataLocation(url).build());
|
||||||
@ -218,8 +215,7 @@ public class OpenSaml4AssertingPartyMetadataRepositoryTests {
|
|||||||
Credential credential = TestOpenSamlObjects
|
Credential credential = TestOpenSamlObjects
|
||||||
.getSigningCredential(TestSaml2X509Credentials.relyingPartyVerifyingCredential(), descriptor.getEntityID());
|
.getSigningCredential(TestSaml2X509Credentials.relyingPartyVerifyingCredential(), descriptor.getEntityID());
|
||||||
try (MockWebServer server = new MockWebServer()) {
|
try (MockWebServer server = new MockWebServer()) {
|
||||||
server.start();
|
enqueue(server, serialized, 3);
|
||||||
server.setDispatcher(new AlwaysDispatch(serialized));
|
|
||||||
AssertingPartyMetadataRepository parties = OpenSaml4AssertingPartyMetadataRepository
|
AssertingPartyMetadataRepository parties = OpenSaml4AssertingPartyMetadataRepository
|
||||||
.withTrustedMetadataLocation(server.url("/").toString())
|
.withTrustedMetadataLocation(server.url("/").toString())
|
||||||
.verificationCredentials((c) -> c.add(credential))
|
.verificationCredentials((c) -> c.add(credential))
|
||||||
@ -238,8 +234,7 @@ public class OpenSaml4AssertingPartyMetadataRepositoryTests {
|
|||||||
Credential credential = TestOpenSamlObjects
|
Credential credential = TestOpenSamlObjects
|
||||||
.getSigningCredential(TestSaml2X509Credentials.relyingPartyVerifyingCredential(), descriptor.getEntityID());
|
.getSigningCredential(TestSaml2X509Credentials.relyingPartyVerifyingCredential(), descriptor.getEntityID());
|
||||||
try (MockWebServer server = new MockWebServer()) {
|
try (MockWebServer server = new MockWebServer()) {
|
||||||
server.start();
|
enqueue(server, serialized, 3);
|
||||||
server.setDispatcher(new AlwaysDispatch(serialized));
|
|
||||||
assertThatExceptionOfType(Saml2Exception.class).isThrownBy(() -> OpenSaml4AssertingPartyMetadataRepository
|
assertThatExceptionOfType(Saml2Exception.class).isThrownBy(() -> OpenSaml4AssertingPartyMetadataRepository
|
||||||
.withTrustedMetadataLocation(server.url("/").toString())
|
.withTrustedMetadataLocation(server.url("/").toString())
|
||||||
.verificationCredentials((c) -> c.add(credential))
|
.verificationCredentials((c) -> c.add(credential))
|
||||||
@ -255,8 +250,7 @@ public class OpenSaml4AssertingPartyMetadataRepositoryTests {
|
|||||||
descriptor.getEntityID());
|
descriptor.getEntityID());
|
||||||
String serialized = serialize(descriptor);
|
String serialized = serialize(descriptor);
|
||||||
try (MockWebServer server = new MockWebServer()) {
|
try (MockWebServer server = new MockWebServer()) {
|
||||||
server.start();
|
enqueue(server, serialized, 3);
|
||||||
server.setDispatcher(new AlwaysDispatch(serialized));
|
|
||||||
AssertingPartyMetadataRepository parties = OpenSaml4AssertingPartyMetadataRepository
|
AssertingPartyMetadataRepository parties = OpenSaml4AssertingPartyMetadataRepository
|
||||||
.withTrustedMetadataLocation(server.url("/").toString())
|
.withTrustedMetadataLocation(server.url("/").toString())
|
||||||
.build();
|
.build();
|
||||||
@ -336,8 +330,7 @@ public class OpenSaml4AssertingPartyMetadataRepositoryTests {
|
|||||||
Credential credential = TestOpenSamlObjects
|
Credential credential = TestOpenSamlObjects
|
||||||
.getSigningCredential(TestSaml2X509Credentials.relyingPartyVerifyingCredential(), descriptor.getEntityID());
|
.getSigningCredential(TestSaml2X509Credentials.relyingPartyVerifyingCredential(), descriptor.getEntityID());
|
||||||
try (MockWebServer server = new MockWebServer()) {
|
try (MockWebServer server = new MockWebServer()) {
|
||||||
server.start();
|
enqueue(server, serialized, 3);
|
||||||
server.setDispatcher(new AlwaysDispatch(serialized));
|
|
||||||
AssertingPartyMetadataRepository parties = OpenSaml4AssertingPartyMetadataRepository
|
AssertingPartyMetadataRepository parties = OpenSaml4AssertingPartyMetadataRepository
|
||||||
.withMetadataLocation(server.url("/").toString())
|
.withMetadataLocation(server.url("/").toString())
|
||||||
.verificationCredentials((c) -> c.add(credential))
|
.verificationCredentials((c) -> c.add(credential))
|
||||||
@ -357,25 +350,10 @@ public class OpenSaml4AssertingPartyMetadataRepositoryTests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final class AlwaysDispatch extends Dispatcher {
|
private static void enqueue(MockWebServer web, String body, int times) {
|
||||||
|
for (int i = 0; i < times; i++) {
|
||||||
private final MockResponse response;
|
web.enqueue(new MockResponse().setBody(body).setResponseCode(200));
|
||||||
|
|
||||||
private AlwaysDispatch(String body) {
|
|
||||||
this.response = new MockResponse().setBody(body)
|
|
||||||
.setResponseCode(200)
|
|
||||||
.setBodyDelay(1, TimeUnit.MILLISECONDS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private AlwaysDispatch(MockResponse response) {
|
|
||||||
this.response = response;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public MockResponse dispatch(RecordedRequest recordedRequest) throws InterruptedException {
|
|
||||||
return this.response;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,7 @@ public class OpenSaml5AssertingPartyMetadataRepositoryTests {
|
|||||||
@Test
|
@Test
|
||||||
public void withMetadataUrlLocationWhenResolvableThenFindByEntityIdReturns() throws Exception {
|
public void withMetadataUrlLocationWhenResolvableThenFindByEntityIdReturns() throws Exception {
|
||||||
try (MockWebServer server = new MockWebServer()) {
|
try (MockWebServer server = new MockWebServer()) {
|
||||||
server.setDispatcher(new AlwaysDispatch(this.metadata));
|
enqueue(server, this.metadata, 3);
|
||||||
AssertingPartyMetadataRepository parties = OpenSaml5AssertingPartyMetadataRepository
|
AssertingPartyMetadataRepository parties = OpenSaml5AssertingPartyMetadataRepository
|
||||||
.withTrustedMetadataLocation(server.url("/").toString())
|
.withTrustedMetadataLocation(server.url("/").toString())
|
||||||
.build();
|
.build();
|
||||||
@ -107,7 +107,7 @@ public class OpenSaml5AssertingPartyMetadataRepositoryTests {
|
|||||||
@Test
|
@Test
|
||||||
public void withMetadataUrlLocationnWhenResolvableThenIteratorReturns() throws Exception {
|
public void withMetadataUrlLocationnWhenResolvableThenIteratorReturns() throws Exception {
|
||||||
try (MockWebServer server = new MockWebServer()) {
|
try (MockWebServer server = new MockWebServer()) {
|
||||||
server.setDispatcher(new AlwaysDispatch(this.entitiesDescriptor));
|
enqueue(server, this.entitiesDescriptor, 3);
|
||||||
List<AssertingPartyMetadata> parties = new ArrayList<>();
|
List<AssertingPartyMetadata> parties = new ArrayList<>();
|
||||||
OpenSaml5AssertingPartyMetadataRepository.withTrustedMetadataLocation(server.url("/").toString())
|
OpenSaml5AssertingPartyMetadataRepository.withTrustedMetadataLocation(server.url("/").toString())
|
||||||
.build()
|
.build()
|
||||||
@ -122,7 +122,6 @@ public class OpenSaml5AssertingPartyMetadataRepositoryTests {
|
|||||||
@Test
|
@Test
|
||||||
public void withMetadataUrlLocationWhenUnresolvableThenThrowsSaml2Exception() throws Exception {
|
public void withMetadataUrlLocationWhenUnresolvableThenThrowsSaml2Exception() throws Exception {
|
||||||
try (MockWebServer server = new MockWebServer()) {
|
try (MockWebServer server = new MockWebServer()) {
|
||||||
server.enqueue(new MockResponse().setBody(this.metadata).setResponseCode(200));
|
|
||||||
String url = server.url("/").toString();
|
String url = server.url("/").toString();
|
||||||
server.shutdown();
|
server.shutdown();
|
||||||
assertThatExceptionOfType(Saml2Exception.class)
|
assertThatExceptionOfType(Saml2Exception.class)
|
||||||
@ -133,7 +132,7 @@ public class OpenSaml5AssertingPartyMetadataRepositoryTests {
|
|||||||
@Test
|
@Test
|
||||||
public void withMetadataUrlLocationWhenMalformedResponseThenSaml2Exception() throws Exception {
|
public void withMetadataUrlLocationWhenMalformedResponseThenSaml2Exception() throws Exception {
|
||||||
try (MockWebServer server = new MockWebServer()) {
|
try (MockWebServer server = new MockWebServer()) {
|
||||||
server.setDispatcher(new AlwaysDispatch("malformed"));
|
enqueue(server, "malformed", 3);
|
||||||
String url = server.url("/").toString();
|
String url = server.url("/").toString();
|
||||||
assertThatExceptionOfType(Saml2Exception.class)
|
assertThatExceptionOfType(Saml2Exception.class)
|
||||||
.isThrownBy(() -> OpenSaml5AssertingPartyMetadataRepository.withTrustedMetadataLocation(url).build());
|
.isThrownBy(() -> OpenSaml5AssertingPartyMetadataRepository.withTrustedMetadataLocation(url).build());
|
||||||
@ -216,8 +215,7 @@ public class OpenSaml5AssertingPartyMetadataRepositoryTests {
|
|||||||
Credential credential = TestOpenSamlObjects
|
Credential credential = TestOpenSamlObjects
|
||||||
.getSigningCredential(TestSaml2X509Credentials.relyingPartyVerifyingCredential(), descriptor.getEntityID());
|
.getSigningCredential(TestSaml2X509Credentials.relyingPartyVerifyingCredential(), descriptor.getEntityID());
|
||||||
try (MockWebServer server = new MockWebServer()) {
|
try (MockWebServer server = new MockWebServer()) {
|
||||||
server.start();
|
enqueue(server, serialized, 3);
|
||||||
server.setDispatcher(new AlwaysDispatch(serialized));
|
|
||||||
AssertingPartyMetadataRepository parties = OpenSaml5AssertingPartyMetadataRepository
|
AssertingPartyMetadataRepository parties = OpenSaml5AssertingPartyMetadataRepository
|
||||||
.withTrustedMetadataLocation(server.url("/").toString())
|
.withTrustedMetadataLocation(server.url("/").toString())
|
||||||
.verificationCredentials((c) -> c.add(credential))
|
.verificationCredentials((c) -> c.add(credential))
|
||||||
@ -236,8 +234,7 @@ public class OpenSaml5AssertingPartyMetadataRepositoryTests {
|
|||||||
Credential credential = TestOpenSamlObjects
|
Credential credential = TestOpenSamlObjects
|
||||||
.getSigningCredential(TestSaml2X509Credentials.relyingPartyVerifyingCredential(), descriptor.getEntityID());
|
.getSigningCredential(TestSaml2X509Credentials.relyingPartyVerifyingCredential(), descriptor.getEntityID());
|
||||||
try (MockWebServer server = new MockWebServer()) {
|
try (MockWebServer server = new MockWebServer()) {
|
||||||
server.start();
|
enqueue(server, serialized, 3);
|
||||||
server.setDispatcher(new AlwaysDispatch(serialized));
|
|
||||||
assertThatExceptionOfType(Saml2Exception.class).isThrownBy(() -> OpenSaml5AssertingPartyMetadataRepository
|
assertThatExceptionOfType(Saml2Exception.class).isThrownBy(() -> OpenSaml5AssertingPartyMetadataRepository
|
||||||
.withTrustedMetadataLocation(server.url("/").toString())
|
.withTrustedMetadataLocation(server.url("/").toString())
|
||||||
.verificationCredentials((c) -> c.add(credential))
|
.verificationCredentials((c) -> c.add(credential))
|
||||||
@ -253,8 +250,7 @@ public class OpenSaml5AssertingPartyMetadataRepositoryTests {
|
|||||||
descriptor.getEntityID());
|
descriptor.getEntityID());
|
||||||
String serialized = serialize(descriptor);
|
String serialized = serialize(descriptor);
|
||||||
try (MockWebServer server = new MockWebServer()) {
|
try (MockWebServer server = new MockWebServer()) {
|
||||||
server.start();
|
enqueue(server, serialized, 3);
|
||||||
server.setDispatcher(new AlwaysDispatch(serialized));
|
|
||||||
AssertingPartyMetadataRepository parties = OpenSaml5AssertingPartyMetadataRepository
|
AssertingPartyMetadataRepository parties = OpenSaml5AssertingPartyMetadataRepository
|
||||||
.withTrustedMetadataLocation(server.url("/").toString())
|
.withTrustedMetadataLocation(server.url("/").toString())
|
||||||
.build();
|
.build();
|
||||||
@ -334,8 +330,7 @@ public class OpenSaml5AssertingPartyMetadataRepositoryTests {
|
|||||||
Credential credential = TestOpenSamlObjects
|
Credential credential = TestOpenSamlObjects
|
||||||
.getSigningCredential(TestSaml2X509Credentials.relyingPartyVerifyingCredential(), descriptor.getEntityID());
|
.getSigningCredential(TestSaml2X509Credentials.relyingPartyVerifyingCredential(), descriptor.getEntityID());
|
||||||
try (MockWebServer server = new MockWebServer()) {
|
try (MockWebServer server = new MockWebServer()) {
|
||||||
server.start();
|
enqueue(server, serialized, 3);
|
||||||
server.setDispatcher(new AlwaysDispatch(serialized));
|
|
||||||
AssertingPartyMetadataRepository parties = OpenSaml5AssertingPartyMetadataRepository
|
AssertingPartyMetadataRepository parties = OpenSaml5AssertingPartyMetadataRepository
|
||||||
.withMetadataLocation(server.url("/").toString())
|
.withMetadataLocation(server.url("/").toString())
|
||||||
.verificationCredentials((c) -> c.add(credential))
|
.verificationCredentials((c) -> c.add(credential))
|
||||||
@ -355,25 +350,10 @@ public class OpenSaml5AssertingPartyMetadataRepositoryTests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final class AlwaysDispatch extends Dispatcher {
|
private static void enqueue(MockWebServer web, String body, int times) {
|
||||||
|
for (int i = 0; i < times; i++) {
|
||||||
private final MockResponse response;
|
web.enqueue(new MockResponse().setBody(body).setResponseCode(200));
|
||||||
|
|
||||||
private AlwaysDispatch(String body) {
|
|
||||||
this.response = new MockResponse().setBody(body)
|
|
||||||
.setResponseCode(200)
|
|
||||||
.setBodyDelay(1, TimeUnit.MILLISECONDS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private AlwaysDispatch(MockResponse response) {
|
|
||||||
this.response = response;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public MockResponse dispatch(RecordedRequest recordedRequest) throws InterruptedException {
|
|
||||||
return this.response;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user