///<summary> /// Test GetKVSecret() with a successfull response form Vault API ///</summary> public async void TestSuccess_GetKVSecret() { var moqHandler = NewMoqHttpHandler(HttpStatusCode.OK); // Make the method call var httpClient = new HttpClient(moqHandler.Object); VaultCom vcom = new VaultCom("http://test.com", "vault_token", "vault_path", httpClient); var callResult = await vcom.GetKVSecret("test-secret"); // Verify returned result Assert.NotNull(callResult); Assert.Equal(expectedKVSecret, callResult); // Verify HttpClient.GetAsync() call Uri expReqUrl = new Uri("http://test.com/v1/vault_path/data/test-secret"); moqHandler.Protected().Verify( "SendAsync", Times.Once(), ItExpr.Is <HttpRequestMessage>(req => req.Method == HttpMethod.Get && req.RequestUri == expReqUrl && req.Headers.Contains("X-Vault-Token") && new List <string>(req.Headers.GetValues("X-Vault-Token")).Contains("vault_token") ), ItExpr.IsAny <CancellationToken>() ); }
///<summary> /// Read a user provided secret ///</summary> public void ReadSecret() { // Get secret name Console.WriteLine(); string secretName = GetSecretName(); // Make call to Vault API Dictionary <string, string> secretData = vaultCommunicator.GetKVSecret(secretName).Result; // Handle output if (secretData != null) { foreach (KeyValuePair <string, string> kv in secretData) { Console.WriteLine($"{kv.Key} = {kv.Value}"); } } else { Console.Error.WriteLine("Getting secret failed!"); } Console.Write("\nPress any key to continue..."); userInput.GetUserInput(); }
///<summary> /// Test GetKVSecret() with a failure response form Vault API ///</summary> public async void TestFailure_GetKVSecret() { var moqHandler = NewMoqHttpHandler(HttpStatusCode.BadRequest); // Make the method call var httpClient = new HttpClient(moqHandler.Object); VaultCom vcom = new VaultCom("http://test.com", "vault_token", "vault_path", httpClient); var callResult = await vcom.GetKVSecret("test-secret"); // Verify returned result Assert.Null(callResult); }