Skip to content

Commit 45b4b3b

Browse files
committed
Extract module GenUtil in yubico-util-scala
1 parent 967b990 commit 45b4b3b

File tree

2 files changed

+26
-27
lines changed
  • webauthn-server-attestation/src/test/scala/com/yubico/fido/metadata
  • yubico-util-scala/src/main/scala/com/yubico/scalacheck/gen

2 files changed

+26
-27
lines changed

webauthn-server-attestation/src/test/scala/com/yubico/fido/metadata/Generators.scala

Lines changed: 13 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.yubico.fido.metadata
22

3+
import com.yubico.scalacheck.gen.GenUtil.maxSized
34
import com.yubico.scalacheck.gen.JavaGenerators.arbitraryUrl
45
import com.yubico.webauthn.TestAuthenticator
56
import com.yubico.webauthn.data.AuthenticatorTransport
@@ -29,15 +30,11 @@ object Generators {
2930
alg <- arbitrary[String]
3031
typ <- Gen.option(Gen.const("JWT"))
3132
x5u <- arbitrary[Option[URL]]
32-
x5c <- Gen.option(
33-
Gen
34-
.chooseNum(0, 4)
35-
.flatMap(n =>
36-
Gen.listOfN(
37-
n,
38-
TestAuthenticator.generateAttestationCertificate()._1,
39-
)
40-
)
33+
x5c <- maxSized(
34+
4,
35+
Gen.option(
36+
Gen.listOf(TestAuthenticator.generateAttestationCertificate()._1)
37+
),
4138
)
4239
} yield MetadataBLOBHeader
4340
.builder()
@@ -54,15 +51,7 @@ object Generators {
5451
legalHeader <- arbitrary[Option[String]]
5552
no <- arbitrary[Int]
5653
nextUpdate <- arbitrary[LocalDate]
57-
entries <-
58-
Gen
59-
.chooseNum(0, 4)
60-
.flatMap(n =>
61-
Gen.containerOfN[Set, MetadataBLOBPayloadEntry](
62-
n,
63-
arbitrary[MetadataBLOBPayloadEntry],
64-
)
65-
)
54+
entries <- maxSized(4, arbitrary[Set[MetadataBLOBPayloadEntry]])
6655
} yield new MetadataBLOBPayload(
6756
legalHeader.orNull,
6857
no,
@@ -161,15 +150,12 @@ object Generators {
161150
tcDisplayContentType <- arbitrary[Option[String]]
162151
tcDisplayPNGCharacteristics <-
163152
arbitrary[Option[List[DisplayPNGCharacteristicsDescriptor]]]
164-
attestationRootCertificates <-
165-
Gen
166-
.chooseNum(0, 4)
167-
.flatMap(n =>
168-
Gen.containerOfN[Set, X509Certificate](
169-
n,
170-
TestAuthenticator.generateAttestationCaCertificate()._1,
171-
)
172-
)
153+
attestationRootCertificates <- maxSized(
154+
4,
155+
Gen.containerOf[Set, X509Certificate](
156+
TestAuthenticator.generateAttestationCaCertificate()._1
157+
),
158+
)
173159
icon <- arbitrary[Option[String]]
174160
supportedExtensions <- arbitrary[Option[Set[ExtensionDescriptor]]]
175161
authenticatorGetInfo <- arbitrary[Option[AuthenticatorGetInfo]]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.yubico.scalacheck.gen
2+
3+
import org.scalacheck.Gen
4+
5+
object GenUtil {
6+
7+
/** @return
8+
* The generator `g` wrapped so that its size is at most `maxSize`.
9+
*/
10+
def maxSized[T](maxSize: Int, g: Gen[T]): Gen[T] =
11+
Gen.sized(size => Gen.resize(Math.min(maxSize, size), g))
12+
13+
}

0 commit comments

Comments
 (0)