11package com .uid2 .admin .vertx ;
22
3+ import com .uid2 .admin .auth .AdminKeyset ;
34import com .uid2 .admin .secret .SecureKeypairGenerator ;
45import com .uid2 .admin .store .Clock ;
56import com .uid2 .admin .vertx .service .ClientSideKeypairService ;
67import com .uid2 .admin .vertx .service .IService ;
78import com .uid2 .admin .vertx .test .ServiceTestBase ;
89import com .uid2 .shared .auth .Role ;
910import com .uid2 .shared .model .ClientSideKeypair ;
11+ import com .uid2 .shared .model .ClientType ;
1012import com .uid2 .shared .model .Site ;
1113import io .vertx .core .Vertx ;
1214import io .vertx .core .json .JsonArray ;
1719import org .junit .jupiter .params .ParameterizedTest ;
1820import org .junit .jupiter .params .provider .Arguments ;
1921import org .junit .jupiter .params .provider .MethodSource ;
20- import org .mockito .ArgumentCaptor ;
21-
2222import java .time .Instant ;
2323import java .util .*;
2424import java .util .stream .Stream ;
2525
2626import static org .junit .jupiter .api .Assertions .*;
27+ import static org .mockito .ArgumentMatchers .anyInt ;
2728import static org .mockito .Mockito .*;
2829
2930public class ClientSideKeypairServiceTest extends ServiceTestBase {
@@ -253,18 +254,14 @@ void addKeypair(Vertx vertx, VertxTestContext testContext) throws Exception {
253254 setKeypairs (new ArrayList <>(expectedKeypairs .values ()));
254255 setSites (new Site (123 , "test" , true ));
255256
257+ Map <Integer , AdminKeyset > adminKeysets = new HashMap <>();
258+ setAdminKeysets (adminKeysets );
259+
256260 JsonObject jo = new JsonObject ();
257261 jo .put ("site_id" , 123 );
258262 jo .put ("contact" , "email@email.com" );
259263
260264 post (vertx , testContext , "api/client_side_keypairs/add" , jo .encode (), response -> {
261- final ArgumentCaptor <Integer > siteId = ArgumentCaptor .forClass (Integer .class );
262- try {
263- verify (this .keysetManager ).createKeysetForSite (siteId .capture ());
264- } catch (Exception e ) {
265- fail (e );
266- }
267- assertEquals (123 , siteId .getValue ());
268265 assertEquals (200 , response .statusCode ());
269266 JsonObject resp = response .bodyAsJsonObject ();
270267 assertEquals (123 , resp .getInteger ("site_id" ));
@@ -276,6 +273,46 @@ void addKeypair(Vertx vertx, VertxTestContext testContext) throws Exception {
276273 assertEquals ("UID2-X-L-" , resp .getString ("public_key" ).substring (0 , 9 ));
277274 assertEquals (KEY_CREATE_TIME_IN_SECONDS , resp .getLong ("created" ));
278275 assertEquals (false , resp .getBoolean ("disabled" ));
276+ AdminKeyset keyset = adminKeysets .values ().stream ()
277+ .filter (k -> k .getSiteId () == 123 )
278+ .findFirst ()
279+ .orElseThrow ();
280+ assertTrue (keyset .getAllowedSites ().isEmpty ());
281+ assertEquals (Set .of (ClientType .DSP ), keyset .getAllowedTypes ());
282+ assertTrue (keyset .isDefault ());
283+ verify (keysetKeyManager ).addKeysetKey (keyset .getKeysetId ());
284+ verify (adminKeysetWriter ).upload (any (), isNull ());
285+ verify (keypairStoreWriter , times (1 )).upload (any (), isNull ());
286+ testContext .completeNow ();
287+ });
288+ }
289+
290+ @ Test
291+ void addKeypair_createsKeysetForSiteWhenNoneExists (Vertx vertx , VertxTestContext testContext ) throws Exception {
292+ fakeAuth (Role .MAINTAINER );
293+ setSites (new Site (456 , "csp_keyset_site" , true ));
294+ setKeypairs (new ArrayList <>());
295+
296+ Map <Integer , AdminKeyset > adminKeysets = new HashMap <>();
297+ setAdminKeysets (adminKeysets );
298+
299+ JsonObject jo = new JsonObject ();
300+ jo .put ("site_id" , 456 );
301+ jo .put ("contact" , "keyset-check@example.com" );
302+
303+ post (vertx , testContext , "api/client_side_keypairs/add" , jo .encode (), response -> {
304+ assertEquals (200 , response .statusCode ());
305+
306+ AdminKeyset keyset = adminKeysets .values ().stream ()
307+ .filter (k -> k .getSiteId () == 456 )
308+ .findFirst ()
309+ .orElseThrow ();
310+ assertTrue (keyset .getAllowedSites ().isEmpty ());
311+ assertEquals (Set .of (ClientType .DSP ), keyset .getAllowedTypes ());
312+ assertTrue (keyset .isDefault ());
313+
314+ verify (keysetKeyManager ).addKeysetKey (keyset .getKeysetId ());
315+ verify (adminKeysetWriter ).upload (any (), isNull ());
279316 verify (keypairStoreWriter , times (1 )).upload (any (), isNull ());
280317 testContext .completeNow ();
281318 });
0 commit comments