Skip to content

Commit de677ac

Browse files
Add nonce test for PromotionalOfferV2SignatureCreatorTest
1 parent 27eeaf0 commit de677ac

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/main/java/com/apple/itunes/storekit/signature/JWSSignatureCreator.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public JWSSignatureCreator(String audience, String signingKey, String keyId, Str
4949
protected String createSignature(Map<String, ?> featureSpecificClaims) {
5050
Map<String, Object> claims = new HashMap<>(featureSpecificClaims);
5151
claims.put(BUNDLE_ID_KEY, bundleId);
52-
claims.put(NONCE_KEY, UUID.randomUUID().toString());
52+
claims.put(NONCE_KEY, createNonce().toString());
5353
return JWT.create()
5454
.withAudience(audience)
5555
.withIssuedAt(Instant.now())
@@ -58,4 +58,8 @@ protected String createSignature(Map<String, ?> featureSpecificClaims) {
5858
.withPayload(claims)
5959
.sign(Algorithm.ECDSA256(signingKey));
6060
}
61+
62+
protected UUID createNonce() {
63+
return UUID.randomUUID();
64+
}
6165
}

src/test/java/com/apple/itunes/storekit/offers/PromotionalOfferV2SignatureCreatorTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,20 @@ void testProductIdMissing() throws Exception {
7474
Assertions.assertThrows(IllegalArgumentException.class, () -> signatureCreator.createSignature(null, OFFER_IDENTIFIER, TRANSACTION_ID));
7575
}
7676
}
77+
78+
@Test
79+
void testNonceIsProvided() throws Exception {
80+
try (InputStream key = this.getClass().getClassLoader().getResourceAsStream("certs/testSigningKey.p8")) {
81+
Assertions.assertNotNull(key);
82+
UUID nonce = UUID.randomUUID();
83+
PromotionalOfferV2SignatureCreator signatureCreator = new PromotionalOfferV2SignatureCreator(new String(key.readAllBytes()), KEY_ID, ISSUER_ID, BUNDLE_ID) {
84+
protected UUID createNonce() {
85+
return nonce;
86+
}
87+
};
88+
String signature = signatureCreator.createSignature(PRODUCT_ID, OFFER_IDENTIFIER, TRANSACTION_ID);
89+
DecodedJWT decodedJWT = JWT.decode(signature);
90+
Assertions.assertEquals(decodedJWT.getClaim("nonce").asString(), nonce.toString());
91+
}
92+
}
7793
}

0 commit comments

Comments
 (0)