diff options
author | Håkon Hallingstad <hakon@yahooinc.com> | 2022-03-16 17:56:59 +0100 |
---|---|---|
committer | Håkon Hallingstad <hakon@yahooinc.com> | 2022-03-16 17:56:59 +0100 |
commit | 0f1ecf940aa79c7fee1dc1f1733bba594e18cebd (patch) | |
tree | 64eafcc9ed3b8a4fd6014bdc902bfa867812342a /vespa-athenz/src/test/java | |
parent | b6277402605a1bf57b77ef0753eaa9a9db02cbe6 (diff) |
Add NTokenGenerator
Diffstat (limited to 'vespa-athenz/src/test/java')
-rw-r--r-- | vespa-athenz/src/test/java/com/yahoo/vespa/athenz/api/NTokenGeneratorTest.java | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/api/NTokenGeneratorTest.java b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/api/NTokenGeneratorTest.java new file mode 100644 index 00000000000..0e07b90f4d6 --- /dev/null +++ b/vespa-athenz/src/test/java/com/yahoo/vespa/athenz/api/NTokenGeneratorTest.java @@ -0,0 +1,52 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.athenz.api; + +import com.yahoo.athenz.auth.util.CryptoException; +import org.junit.Test; + +import java.security.PrivateKey; +import java.time.Instant; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertSame; +import static org.mockito.Mockito.mock; + +/** + * @author hakonhall + */ +public class NTokenGeneratorTest { + private NTokenGenerator generator; + private final PrivateKey key = mock(PrivateKey.class); + + @Test + public void ntoken() { + var signer = new Signer("signature"); + generator = new NTokenGenerator(signer, () -> Instant.ofEpochSecond(12L), () -> 3L); + AthenzIdentity identity = new AthenzService("domain", "service"); + + NToken token = generator.setIdentity(identity) + .setKeyVersion("0") + .sign(key); + + assertEquals("v=S1;d=domain;n=service;k=0;a=3;t=12;e=612", signer.message); + assertSame(key, signer.key); + assertEquals("v=S1;d=domain;n=service;k=0;a=3;t=12;e=612;s=signature", token.getRawToken()); + } + + private static class Signer implements NTokenGenerator.Signer { + private final String signature; + public String message = null; + public PrivateKey key = null; + + public Signer(String signature) { + this.signature = signature; + } + + @Override + public String sign(String message, PrivateKey key) throws CryptoException { + this.message = message; + this.key = key; + return signature; + } + } +}
\ No newline at end of file |