aboutsummaryrefslogtreecommitdiffstats
path: root/vespa-athenz/src/test/java
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@yahooinc.com>2022-03-16 17:56:59 +0100
committerHåkon Hallingstad <hakon@yahooinc.com>2022-03-16 17:56:59 +0100
commit0f1ecf940aa79c7fee1dc1f1733bba594e18cebd (patch)
tree64eafcc9ed3b8a4fd6014bdc902bfa867812342a /vespa-athenz/src/test/java
parentb6277402605a1bf57b77ef0753eaa9a9db02cbe6 (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.java52
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