@@ -362,7 +362,34 @@ void isInUseChecksUseInfoCache() throws IOException {
362362 verify (useInfoCache ).get (eq (inUseFilePath ), any ());
363363 }
364364
365- //TODO: test validate
365+ @ Test
366+ @ DisplayName ("validation checks for required properties" )
367+ void validateChecksForRequiredProperties () {
368+ var inUseManager = new RealInUseManager ("cryptobot3000" , cryptor );
369+
370+ //owner missing
371+ var props = new Properties ();
372+ Assertions .assertThrows (IllegalArgumentException .class , () -> inUseManager .validate (props ));
373+
374+ //owner is empty
375+ props .setProperty (UseToken .OWNER_KEY , " " );
376+ Assertions .assertThrows (IllegalArgumentException .class , () -> inUseManager .validate (props ));
377+
378+ //lastUpdated missing
379+ props .setProperty (UseToken .OWNER_KEY , "foobar" );
380+ Assertions .assertThrows (IllegalArgumentException .class , () -> inUseManager .validate (props ));
381+
382+ //lastUpdated invalid
383+ props .setProperty (UseToken .LASTUPDATED_KEY , "3301" );
384+ Assertions .assertThrows (IllegalArgumentException .class , () -> inUseManager .validate (props ));
385+
386+ //everything good
387+ var lastUpdated = Instant .now ();
388+ props .setProperty (UseToken .LASTUPDATED_KEY , lastUpdated .toString ());
389+ var useInfo = Assertions .assertDoesNotThrow (() -> inUseManager .validate (props ));
390+ Assertions .assertEquals ("foobar" ,useInfo .owner ());
391+ Assertions .assertEquals (lastUpdated , useInfo .lastUpdated ());
392+ }
366393
367394 @ AfterEach
368395 public void afterEach () {
0 commit comments