public async Task GetCommand_ExecuteAsync_CallsHostProviderAndWritesCredential() { const string testUserName = "******"; const string testPassword = "******"; // [SuppressMessage("Microsoft.Security", "CS001:SecretInline", Justification="Fake credential")] ICredential testCredential = new GitCredential(testUserName, testPassword); var stdin = $"protocol=http\nhost=example.com\n\n"; var expectedStdOutDict = new Dictionary <string, string> { ["protocol"] = "http", ["host"] = "example.com", ["username"] = testUserName, ["password"] = testPassword }; var providerMock = new Mock <IHostProvider>(); providerMock.Setup(x => x.GetCredentialAsync(It.IsAny <InputArguments>())) .ReturnsAsync(testCredential); var providerRegistry = new TestHostProviderRegistry { Provider = providerMock.Object }; var context = new TestCommandContext { Streams = { In = stdin } }; var command = new GetCommand(context, providerRegistry); await command.ExecuteAsync(); IDictionary <string, string> actualStdOutDict = ParseDictionary(context.Streams.Out); providerMock.Verify(x => x.GetCredentialAsync(It.IsAny <InputArguments>()), Times.Once); Assert.Equal(expectedStdOutDict, actualStdOutDict); }
public async Task StoreCommand_ExecuteAsync_CallsHostProvider() { const string testUserName = "******"; const string testPassword = "******"; var stdin = $"username={testUserName}\npassword={testPassword}\n\n"; var expectedInput = new InputArguments(new Dictionary <string, string> { ["username"] = testUserName, ["password"] = testPassword }); var providerMock = new Mock <IHostProvider>(); providerMock.Setup(x => x.StoreCredentialAsync(It.IsAny <InputArguments>())) .Returns(Task.CompletedTask); var providerRegistry = new TestHostProviderRegistry { Provider = providerMock.Object }; var context = new TestCommandContext { Streams = { In = stdin } }; string[] cmdArgs = { "store" }; var command = new StoreCommand(providerRegistry); await command.ExecuteAsync(context, cmdArgs); providerMock.Verify( x => x.StoreCredentialAsync(It.Is <InputArguments>(y => AreInputArgumentsEquivalent(expectedInput, y))), Times.Once); }
public async Task EraseCommand_ExecuteAsync_CallsHostProvider() { const string testUserName = "******"; const string testPassword = "******"; // [SuppressMessage("Microsoft.Security", "CS001:SecretInline", Justification="Fake credential")] var stdin = $"username={testUserName}\npassword={testPassword}\n\n"; var expectedInput = new InputArguments(new Dictionary <string, string> { ["username"] = testUserName, ["password"] = testPassword // [SuppressMessage("Microsoft.Security", "CS001:SecretInline", Justification="Fake credential")] }); var providerMock = new Mock <IHostProvider>(); providerMock.Setup(x => x.EraseCredentialAsync(It.IsAny <InputArguments>())) .Returns(Task.CompletedTask); var providerRegistry = new TestHostProviderRegistry { Provider = providerMock.Object }; var context = new TestCommandContext { Streams = { In = stdin } }; var command = new EraseCommand(context, providerRegistry); await command.ExecuteAsync(); providerMock.Verify( x => x.EraseCredentialAsync(It.Is <InputArguments>(y => AreInputArgumentsEquivalent(expectedInput, y))), Times.Once); }
public async Task GetCommand_ExecuteAsync_CallsHostProviderAndWritesCredential() { const string testUserName = "******"; const string testPassword = "******"; ICredential testCredential = new GitCredential(testUserName, testPassword); var expectedStdOutDict = new Dictionary <string, string> { ["username"] = testUserName, ["password"] = testPassword }; var providerMock = new Mock <IHostProvider>(); providerMock.Setup(x => x.GetCredentialAsync(It.IsAny <InputArguments>())) .ReturnsAsync(testCredential); var providerRegistry = new TestHostProviderRegistry { Provider = providerMock.Object }; var context = new TestCommandContext(); string[] cmdArgs = { "get" }; var command = new GetCommand(providerRegistry); await command.ExecuteAsync(context, cmdArgs); IDictionary <string, string> actualStdOutDict = ParseDictionary(context.Streams.Out); providerMock.Verify(x => x.GetCredentialAsync(It.IsAny <InputArguments>()), Times.Once); Assert.Equal(expectedStdOutDict, actualStdOutDict); }