• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2023 Google LLC
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //      http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 //
15 ////////////////////////////////////////////////////////////////////////////////
16 
17 package com.google.crypto.tink.jwt;
18 
19 import static com.google.common.truth.Truth.assertThat;
20 
21 import org.junit.Test;
22 import org.junit.runner.RunWith;
23 import org.junit.runners.JUnit4;
24 
25 @RunWith(JUnit4.class)
26 public final class JwtHmacParametersTest {
27   @Test
buildParametersAndGetProperties()28   public void buildParametersAndGetProperties() throws Exception {
29     JwtHmacParameters parameters =
30         JwtHmacParameters.builder()
31             .setKeySizeBytes(16)
32             .setAlgorithm(JwtHmacParameters.Algorithm.HS256)
33             .setKidStrategy(JwtHmacParameters.KidStrategy.IGNORED)
34             .build();
35     assertThat(parameters.hasIdRequirement()).isFalse();
36     assertThat(parameters.getKeySizeBytes()).isEqualTo(16);
37     assertThat(parameters.getKidStrategy()).isEqualTo(JwtHmacParameters.KidStrategy.IGNORED);
38     assertThat(parameters.getAlgorithm()).isEqualTo(JwtHmacParameters.Algorithm.HS256);
39     assertThat(parameters.hasIdRequirement()).isFalse();
40     assertThat(parameters.allowKidAbsent()).isTrue();
41   }
42 
43   @Test
buildParametersAndGetProperties_differentAlgorithm()44   public void buildParametersAndGetProperties_differentAlgorithm() throws Exception {
45     JwtHmacParameters parameters =
46         JwtHmacParameters.builder()
47             .setKeySizeBytes(16)
48             .setAlgorithm(JwtHmacParameters.Algorithm.HS512)
49             .setKidStrategy(JwtHmacParameters.KidStrategy.IGNORED)
50             .build();
51     assertThat(parameters.getAlgorithm()).isEqualTo(JwtHmacParameters.Algorithm.HS512);
52   }
53 
54   @Test
buildParametersAndGetProperties_kidCustom()55   public void buildParametersAndGetProperties_kidCustom() throws Exception {
56     JwtHmacParameters parameters =
57         JwtHmacParameters.builder()
58             .setKeySizeBytes(16)
59             .setAlgorithm(JwtHmacParameters.Algorithm.HS256)
60             .setKidStrategy(JwtHmacParameters.KidStrategy.CUSTOM)
61             .build();
62     assertThat(parameters.getKidStrategy()).isEqualTo(JwtHmacParameters.KidStrategy.CUSTOM);
63     assertThat(parameters.hasIdRequirement()).isFalse();
64     assertThat(parameters.allowKidAbsent()).isTrue();
65   }
66 
67   @Test
buildParametersAndGetProperties_kidBase64()68   public void buildParametersAndGetProperties_kidBase64() throws Exception {
69     JwtHmacParameters parameters =
70         JwtHmacParameters.builder()
71             .setKeySizeBytes(16)
72             .setAlgorithm(JwtHmacParameters.Algorithm.HS256)
73             .setKidStrategy(JwtHmacParameters.KidStrategy.BASE64_ENCODED_KEY_ID)
74             .build();
75     assertThat(parameters.getKidStrategy()).isEqualTo(JwtHmacParameters.KidStrategy.BASE64_ENCODED_KEY_ID);
76     assertThat(parameters.hasIdRequirement()).isTrue();
77     assertThat(parameters.allowKidAbsent()).isFalse();
78   }
79 
80   @Test
buildParameters_differentKeySize()81   public void buildParameters_differentKeySize() throws Exception {
82     JwtHmacParameters parameters =
83         JwtHmacParameters.builder()
84             .setKeySizeBytes(17)
85             .setAlgorithm(JwtHmacParameters.Algorithm.HS256)
86             .setKidStrategy(JwtHmacParameters.KidStrategy.IGNORED)
87             .build();
88     assertThat(parameters.getKeySizeBytes()).isEqualTo(17);
89   }
90 
91   @Test
testEqualsTwoInstances()92   public void testEqualsTwoInstances() throws Exception {
93     JwtHmacParameters parameters1 =
94         JwtHmacParameters.builder()
95             .setKeySizeBytes(16)
96             .setAlgorithm(JwtHmacParameters.Algorithm.HS256)
97             .setKidStrategy(JwtHmacParameters.KidStrategy.IGNORED)
98             .build();
99     JwtHmacParameters parameters2 =
100         JwtHmacParameters.builder()
101             .setKeySizeBytes(16)
102             .setAlgorithm(JwtHmacParameters.Algorithm.HS256)
103             .setKidStrategy(JwtHmacParameters.KidStrategy.IGNORED)
104             .build();
105     assertThat(parameters1).isEqualTo(parameters2);
106     assertThat(parameters1.hashCode()).isEqualTo(parameters2.hashCode());
107   }
108 
109   @Test
testEqualsHashCodeDependsOnKeySize()110   public void testEqualsHashCodeDependsOnKeySize() throws Exception {
111     JwtHmacParameters parameters1 =
112         JwtHmacParameters.builder()
113             .setKeySizeBytes(16)
114             .setAlgorithm(JwtHmacParameters.Algorithm.HS256)
115             .setKidStrategy(JwtHmacParameters.KidStrategy.IGNORED)
116             .build();
117     JwtHmacParameters parameters2 =
118         JwtHmacParameters.builder()
119             .setKeySizeBytes(17)
120             .setAlgorithm(JwtHmacParameters.Algorithm.HS256)
121             .setKidStrategy(JwtHmacParameters.KidStrategy.IGNORED)
122             .build();
123     assertThat(parameters1).isNotEqualTo(parameters2);
124     assertThat(parameters1.hashCode()).isNotEqualTo(parameters2.hashCode());
125   }
126 
127   @Test
testEqualsHashCodeDependsOnAlgorithm()128   public void testEqualsHashCodeDependsOnAlgorithm() throws Exception {
129     JwtHmacParameters parameters1 =
130         JwtHmacParameters.builder()
131             .setKeySizeBytes(16)
132             .setAlgorithm(JwtHmacParameters.Algorithm.HS256)
133             .setKidStrategy(JwtHmacParameters.KidStrategy.IGNORED)
134             .build();
135     JwtHmacParameters parameters2 =
136         JwtHmacParameters.builder()
137             .setKeySizeBytes(16)
138             .setAlgorithm(JwtHmacParameters.Algorithm.HS384)
139             .setKidStrategy(JwtHmacParameters.KidStrategy.IGNORED)
140             .build();
141     assertThat(parameters1).isNotEqualTo(parameters2);
142     assertThat(parameters1.hashCode()).isNotEqualTo(parameters2.hashCode());
143   }
144 
145   @Test
testEqualsHashCodeDependsOnKidStrategy()146   public void testEqualsHashCodeDependsOnKidStrategy() throws Exception {
147     JwtHmacParameters parameters1 =
148         JwtHmacParameters.builder()
149             .setKeySizeBytes(16)
150             .setAlgorithm(JwtHmacParameters.Algorithm.HS256)
151             .setKidStrategy(JwtHmacParameters.KidStrategy.IGNORED)
152             .build();
153     JwtHmacParameters parameters2 =
154         JwtHmacParameters.builder()
155             .setKeySizeBytes(16)
156             .setAlgorithm(JwtHmacParameters.Algorithm.HS256)
157             .setKidStrategy(JwtHmacParameters.KidStrategy.BASE64_ENCODED_KEY_ID)
158             .build();
159     assertThat(parameters1).isNotEqualTo(parameters2);
160     assertThat(parameters1.hashCode()).isNotEqualTo(parameters2.hashCode());
161   }
162 }
163