Skip to content

Commit ecfae42

Browse files
committed
Add an origins(Optional) setter
1 parent 0cbba57 commit ecfae42

File tree

3 files changed

+69
-1
lines changed

3 files changed

+69
-1
lines changed

webauthn-server-core/src/main/java/com/yubico/webauthn/RelyingParty.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -588,6 +588,16 @@ public static class RelyingPartyBuilder {
588588
Optional.empty();
589589
private @NonNull Optional<AttestationTrustSource> attestationTrustSource = Optional.empty();
590590

591+
public RelyingPartyBuilder origins(@NonNull Set<String> origins) {
592+
this.origins = origins;
593+
return this;
594+
}
595+
596+
public RelyingPartyBuilder origins(Optional<Set<String>> origins) {
597+
this.origins = origins.orElse(null);
598+
return this;
599+
}
600+
591601
public static class MandatoryStages {
592602
private final RelyingPartyBuilder builder = new RelyingPartyBuilder();
593603

webauthn-server-core/src/test/java/com/yubico/webauthn/RelyingPartyTest.java

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,64 @@ public void originsIsImmutable() {
103103
}
104104
}
105105

106+
@Test
107+
public void testOriginsWithEmptySet() {
108+
Set<String> origins = new HashSet<>();
109+
110+
RelyingParty rp =
111+
RelyingParty.builder()
112+
.identity(RelyingPartyIdentity.builder().id("localhost").name("Test").build())
113+
.credentialRepository(unimplementedCredentialRepository())
114+
.origins(origins)
115+
.build();
116+
117+
assertEquals(0, rp.getOrigins().size());
118+
}
119+
120+
@Test
121+
public void testOriginsWithSet() {
122+
Set<String> origins = new HashSet<>();
123+
origins.add("test1");
124+
origins.add("test2");
125+
126+
RelyingParty rp =
127+
RelyingParty.builder()
128+
.identity(RelyingPartyIdentity.builder().id("localhost").name("Test").build())
129+
.credentialRepository(unimplementedCredentialRepository())
130+
.origins(origins)
131+
.build();
132+
133+
assertEquals(2, rp.getOrigins().size());
134+
}
135+
136+
@Test
137+
public void testOriginsWithEmptyOptionalSet() {
138+
RelyingParty rp =
139+
RelyingParty.builder()
140+
.identity(RelyingPartyIdentity.builder().id("localhost").name("Test").build())
141+
.credentialRepository(unimplementedCredentialRepository())
142+
.origins(Optional.empty())
143+
.build();
144+
145+
assertEquals(1, rp.getOrigins().size());
146+
}
147+
148+
@Test
149+
public void testOriginsWithOptionalSet() {
150+
Set<String> origins = new HashSet<>();
151+
origins.add("test1");
152+
origins.add("test2");
153+
154+
RelyingParty rp =
155+
RelyingParty.builder()
156+
.identity(RelyingPartyIdentity.builder().id("localhost").name("Test").build())
157+
.credentialRepository(unimplementedCredentialRepository())
158+
.origins(Optional.of(origins))
159+
.build();
160+
161+
assertEquals(2, rp.getOrigins().size());
162+
}
163+
106164
@Test
107165
public void filtersAlgorithmsToThoseAvailable() throws HexException {
108166
for (Provider prov : Security.getProviders()) {

webauthn-server-core/src/test/scala/com/yubico/webauthn/RelyingPartyStartOperationSpec.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ class RelyingPartyStartOperationSpec
115115
.identity(rpId)
116116
.credentialRepository(credRepo(credentials, userId))
117117
.preferredPubkeyParams(List(PublicKeyCredentialParameters.ES256).asJava)
118-
.origins(Set.empty.asJava)
118+
.origins(Set.empty[String].asJava)
119119
appId.foreach { appid => builder = builder.appId(appid) }
120120
attestationConveyancePreference.foreach { acp =>
121121
builder = builder.attestationConveyancePreference(acp)

0 commit comments

Comments
 (0)