### Question:
SecretSession { public Path decryptAsFile(String encryptedSecret) { if (secretFileCache.containsKey(encryptedSecret)) { return secretFileCache.get(encryptedSecret); } Path decryptedFile = secretManager.decryptAsFile(encryptedSecret); addCachedSecretFile(encryptedSecret, decryptedFile); return decryptedFile; } SecretSession(SecretManager secretManager); String decrypt(String encryptedSecret); Path decryptAsFile(String encryptedSecret); byte[] decryptAsBytes(String encrypted); void clearCachedSecrets(); void addCachedSecret(String encrypted, String decrypted); void addCachedSecretFile(String encrypted, Path decrypted);  }### Answer:
@Test public void decryptAsFileReturnsSecretFromCache() { String decryptedPath = secretSession.decryptAsFile("encrypted:noop!f:file").toString(); assertEquals("decryptedFile", decryptedPath); }
@Test public void decryptAsFileAddsToCacheOnCacheMiss() { doReturn(Paths.get("tempFile")).when(secretManager).decryptAsFile(any()); assertEquals(1, secretSession.secretFileCache.size()); Path decrypted = secretSession.decryptAsFile("encrypted:noop!f:unknown"); assertEquals(2, secretSession.secretFileCache.size()); }