@@ -40,7 +40,7 @@ public class EncryptionKeyServiceTest extends ServiceTestBase {
4040 private static final long A_HUNDRED_DAYS_IN_SECONDS = 8640000L ;
4141 private static final int MAX_KEY_ID = 777 ;
4242 private static final boolean FILTER_KEY_OVER_CUT_OFF_DAYS = true ;
43- private Clock clock = mock (Clock .class );
43+ private final Clock clock = mock (Clock .class );
4444 private EncryptionKeyService keyService = null ;
4545
4646 @ BeforeEach
@@ -80,11 +80,6 @@ private void assertSiteKeyActivation(EncryptionKey key, Instant generatedTime) {
8080 key .getCreated (), key .getActivates (), key .getExpires ());
8181 }
8282
83- private void assertSiteKeyActivation (KeysetKey key , Instant generatedTime ) {
84- assertKeyActivation (generatedTime , SITE_KEY_ACTIVATES_IN_SECONDS , SITE_KEY_EXPIRES_AFTER_SECONDS ,
85- key .getCreated (), key .getActivates (), key .getExpires ());
86- }
87-
8883 private void checkEncryptionKeyResponse (EncryptionKey [] expectedKeys , Object [] actualKeys ) {
8984 assertEquals (expectedKeys .length , actualKeys .length );
9085 for (int i = 0 ; i < expectedKeys .length ; ++i ) {
@@ -147,7 +142,7 @@ void addSiteKey() throws Exception {
147142
148143 @ Test
149144 void addSiteKeyAddsKeysetAndKey () throws Exception {
150- Map <Integer , AdminKeyset > keysets = new HashMap <Integer , AdminKeyset >() {{
145+ Map <Integer , AdminKeyset > keysets = new HashMap <>() {{
151146 put (1 , new AdminKeyset (1 , 2 , "test" , Set .of (4 ,6 ,7 ), Instant .now ().getEpochSecond (),true , true , new HashSet <>()));
152147 }};
153148 setAdminKeysets (keysets );
@@ -157,13 +152,13 @@ void addSiteKeyAddsKeysetAndKey() throws Exception {
157152
158153 AdminKeyset expected = new AdminKeyset (4 , 5 , "" , null , Instant .now ().getEpochSecond (), true , true , new HashSet <>());
159154 assertNotNull (keysets .get (4 ));
160- assertTrue ( keysets .get (4 ). equals ( expected ));
155+ assertEquals ( expected , keysets .get (4 ));
161156 verify (keysetKeyStoreWriter ).upload (collectionOfSize (1 ), eq (124 ));
162157 }
163158
164159 @ Test
165160 void addSiteKeyUsesKeysetAndAddsKey () throws Exception {
166- Map <Integer , AdminKeyset > keysets = new HashMap <Integer , AdminKeyset >() {{
161+ Map <Integer , AdminKeyset > keysets = new HashMap <>() {{
167162 put (1 , new AdminKeyset (1 , 5 , "test" , Set .of (4 ,6 ,7 ), Instant .now ().getEpochSecond (),true , true , new HashSet <>()));
168163 }};
169164 setAdminKeysets (keysets );
@@ -177,21 +172,41 @@ void addSiteKeyUsesKeysetAndAddsKey() throws Exception {
177172 }
178173
179174 @ Test
180- void addKeysetKey () throws Exception {
175+ void whenAddFirstKeyForKeysetItIsImmediatelyActiveAndUploaded () throws Exception {
181176 setKeysetKeys (123 );
182- Map <Integer , AdminKeyset > keysets = new HashMap <Integer , AdminKeyset >() {{
177+ Map <Integer , AdminKeyset > keysets = new HashMap <>() {{
183178 put (1 , new AdminKeyset (1 , 5 , "test" , Set .of (4 ,6 ,7 ), Instant .now ().getEpochSecond (),true , true , new HashSet <>()));
184179 }};
185180 setAdminKeysets (keysets );
186181 final KeysetKey key = keyService .addKeysetKey (1 );
187182 verify (keysetKeyStoreWriter ).upload (collectionOfSize (1 ), eq (124 ));
188- assertSiteKeyActivation (key , clock .now ());
183+
184+ final int siteKeyActivatesInSeconds = 0 ; //since this is the first key for a keyset, test that it is immediately active
185+ assertKeyActivation (clock .now (), siteKeyActivatesInSeconds , SITE_KEY_EXPIRES_AFTER_SECONDS , key .getCreated (), key .getActivates (), key .getExpires ());
189186 }
190187
188+ @ Test
189+ void whenAddSecondKeyForKeysetItIsNotImmediatelyActive () throws Exception {
190+ final int keysetId = 567 ;
191+ Map <Integer , AdminKeyset > keysets = new HashMap <>() {{
192+ put (keysetId , new AdminKeyset (keysetId , 5 , "test" , Set .of (4 ,6 ,7 ), Instant .now ().getEpochSecond (),true , true , new HashSet <>()));
193+ }};
194+ setAdminKeysets (keysets );
195+
196+ final KeysetKey [] keys = {
197+ new KeysetKey (11 , null , Instant .ofEpochMilli (KEY_CREATE_TIME_IN_MILLI ), Instant .ofEpochMilli (KEY_ACTIVATE_TIME_IN_MILLI ), Instant .ofEpochMilli (KEY_EXPIRE_TIME_IN_MILLI ), keysetId ),
198+ };
199+ setKeysetKeys (MAX_KEY_ID , keys );
200+
201+ final KeysetKey key = keyService .addKeysetKey (keysetId );
202+ assertKeyActivation (clock .now (), SITE_KEY_ACTIVATES_IN_SECONDS , SITE_KEY_EXPIRES_AFTER_SECONDS , key .getCreated (), key .getActivates (), key .getExpires ());
203+ }
204+
205+
191206 @ Test
192207 void addKeysetKeyAddsSiteKey () throws Exception {
193208 setKeysetKeys (123 );
194- Map <Integer , AdminKeyset > keysets = new HashMap <Integer , AdminKeyset >() {{
209+ Map <Integer , AdminKeyset > keysets = new HashMap <>() {{
195210 put (1 , new AdminKeyset (1 , 5 , "test" , Set .of (4 ,6 ,7 ), Instant .now ().getEpochSecond (),true , true , new HashSet <>()));
196211 }};
197212 setAdminKeysets (keysets );
@@ -406,7 +421,7 @@ void rotateKeysetKey(Vertx vertx, VertxTestContext testContext) throws Exception
406421 new KeysetKey (12 , null , Instant .ofEpochMilli (KEY_CREATE_TIME_IN_MILLI +1 ), Instant .ofEpochMilli (KEY_ACTIVATE_TIME_IN_MILLI +1 ), Instant .ofEpochMilli (KEY_EXPIRE_TIME_IN_MILLI +1 ), 5 )
407422 };
408423 setKeysetKeys (MAX_KEY_ID , keys );
409- Map <Integer , AdminKeyset > keysets = new HashMap <Integer , AdminKeyset >() {{
424+ Map <Integer , AdminKeyset > keysets = new HashMap <>() {{
410425 put (4 , new AdminKeyset (4 , 2 , "test" , Set .of (4 ,6 ,7 ), Instant .now ().getEpochSecond (),true , true , new HashSet <>()));
411426 put (5 , new AdminKeyset (5 , 3 , "test" , Set .of (4 ,6 ,7 ), Instant .now ().getEpochSecond (),true , true , new HashSet <>()));
412427 }};
@@ -673,8 +688,7 @@ void createKeysetKeysFirstRun() throws Exception {
673688 new EncryptionKey (17 , null , Instant .ofEpochMilli (KEY_CREATE_TIME_IN_MILLI ), Instant .ofEpochMilli (KEY_ACTIVATE_TIME_IN_MILLI ), Instant .ofEpochMilli (KEY_EXPIRE_TIME_IN_MILLI ), 2 ),
674689 };
675690 setEncryptionKeys (MAX_KEY_ID , keys );
676- Map <Integer , AdminKeyset > keysets = new HashMap <Integer , AdminKeyset >() {{
677- }};
691+ Map <Integer , AdminKeyset > keysets = new HashMap <>();
678692 setAdminKeysets (keysets );
679693 final KeysetKey [] keysetKeys = {};
680694 setKeysetKeys (0 , keysetKeys );
@@ -704,8 +718,7 @@ void createKeysetKeysNoKeysNeed() throws Exception {
704718 new EncryptionKey (14 , null , Instant .ofEpochMilli (KEY_CREATE_TIME_IN_MILLI ), Instant .ofEpochMilli (KEY_ACTIVATE_TIME_IN_MILLI ), Instant .ofEpochMilli (KEY_EXPIRE_TIME_IN_MILLI ), 7 ),
705719 };
706720 setEncryptionKeys (MAX_KEY_ID , keys );
707- Map <Integer , AdminKeyset > keysets = new HashMap <Integer , AdminKeyset >() {{
708- }};
721+ Map <Integer , AdminKeyset > keysets = new HashMap <>();
709722 setAdminKeysets (keysets );
710723 final KeysetKey [] keysetKeys = {
711724 new KeysetKey (11 , null , Instant .ofEpochMilli (KEY_CREATE_TIME_IN_MILLI ), Instant .ofEpochMilli (KEY_ACTIVATE_TIME_IN_MILLI ), Instant .ofEpochMilli (KEY_EXPIRE_TIME_IN_MILLI ), 1 ),
@@ -731,7 +744,7 @@ void createKeysetKeysMissingKey() throws Exception {
731744 new EncryptionKey (16 , null , Instant .ofEpochMilli (KEY_CREATE_TIME_IN_MILLI ), Instant .ofEpochMilli (KEY_ACTIVATE_TIME_IN_MILLI ), Instant .ofEpochMilli (KEY_EXPIRE_TIME_IN_MILLI ), 8 ),
732745 };
733746 setEncryptionKeys (MAX_KEY_ID , keys );
734- Map <Integer , AdminKeyset > keysets = new HashMap <Integer , AdminKeyset >() {{
747+ Map <Integer , AdminKeyset > keysets = new HashMap <>() {{
735748 put (1 , new AdminKeyset (1 , 7 , "test" , Set .of (4 ,6 ,7 ), Instant .now ().getEpochSecond (),true , true , new HashSet <>()));
736749 }};
737750 setAdminKeysets (keysets );
0 commit comments