diff --git a/src/GitHub.Api/Authentication/Keychain.cs b/src/GitHub.Api/Authentication/Keychain.cs index 4d3961d2b..ca3006571 100644 --- a/src/GitHub.Api/Authentication/Keychain.cs +++ b/src/GitHub.Api/Authentication/Keychain.cs @@ -64,14 +64,15 @@ public async Task Load(UriString host) logger.Warning("Cannot load host from Credential Manager; removing from cache"); await Clear(host, false); } - else if (keychainItem.Username != cachedConnection.Username) - { - logger.Warning("Item loaded from credential manager does not match connection cache ; removing from cache"); - await Clear(host, false); - } else { - logger.Trace($@"Loaded from Credential Manager Host:""{keychainItem.Host}"" Username:""{keychainItem.Username}"""); + if (keychainItem.Username != cachedConnection.Username) + { + logger.Warning("Keychain Username: {0} does not match; Hopefully it works", keychainItem.Username); + } + + logger.Trace("Loaded from Credential Manager Host:\"{0}\" Username:\"{1}\"", keychainItem.Host, keychainItem.Username); + keychainAdapter.Set(keychainItem); } diff --git a/src/tests/UnitTests/Authentication/KeychainTests.cs b/src/tests/UnitTests/Authentication/KeychainTests.cs index 46d27929e..292a92a4d 100644 --- a/src/tests/UnitTests/Authentication/KeychainTests.cs +++ b/src/tests/UnitTests/Authentication/KeychainTests.cs @@ -247,81 +247,6 @@ public void ShouldDeleteFromCacheWhenLoadReturnsNullFromConnectionManager() credentialManager.DidNotReceive().Save(Arg.Any()); } - [Test] - public void ShouldDeleteFromCacheWhenLoadReturnsNullFromConnectionManagerDueToUserMismatch() - { - const string connectionsCachePath = @"c:\UserCachePath\"; - const string connectionsCacheFile = @"c:\UserCachePath\connections.json"; - - const string cachedUsername = "SomeCachedUser"; - const string credentialedUsername = "SomeCredentialedUser"; - - const string token = "SomeToken"; - - var hostUri = new UriString("https://github.com/"); - - var fileSystem = SubstituteFactory.CreateFileSystem(new CreateFileSystemOptions - { - FilesThatExist = new List { connectionsCacheFile }, - FileContents = new Dictionary> { - {connectionsCacheFile, new List {$@"[{{""Host"":""https://github.com/"",""Username"":""{cachedUsername}""}}]" - }} - } - }); - - NPath.FileSystem = fileSystem; - - var environment = SubstituteFactory.CreateEnvironment(); - environment.UserCachePath.Returns(info => connectionsCachePath.ToNPath()); - environment.FileSystem.Returns(fileSystem); - - var credentialManager = Substitute.For(); - credentialManager.Load(hostUri).Returns(info => - { - var credential = Substitute.For(); - credential.Username.Returns(credentialedUsername); - credential.Token.Returns(token); - credential.Host.Returns(hostUri); - return TaskEx.FromResult(credential); - }); - - var keychain = new Keychain(environment, credentialManager); - keychain.Initialize(); - - fileSystem.Received(1).FileExists(connectionsCacheFile); - fileSystem.DidNotReceive().FileDelete(Args.String); - fileSystem.Received(1).ReadAllText(connectionsCacheFile); - fileSystem.DidNotReceive().ReadAllLines(Args.String); - fileSystem.DidNotReceive().WriteAllText(Args.String, Args.String); - fileSystem.DidNotReceive().WriteAllLines(Args.String, Arg.Any()); - - credentialManager.DidNotReceive().Load(Args.UriString); - credentialManager.DidNotReceive().HasCredentials(); - credentialManager.DidNotReceive().Delete(Args.UriString); - credentialManager.DidNotReceive().Save(Arg.Any()); - - fileSystem.ClearReceivedCalls(); - - var uriString = keychain.Hosts.FirstOrDefault(); - var keychainAdapter = keychain.Load(uriString).Result; - keychainAdapter.Credential.Should().BeNull(); - - keychainAdapter.OctokitCredentials.AuthenticationType.Should().Be(AuthenticationType.Anonymous); - keychainAdapter.OctokitCredentials.Login.Should().BeNull(); - keychainAdapter.OctokitCredentials.Password.Should().BeNull(); - - fileSystem.DidNotReceive().FileExists(Args.String); - fileSystem.DidNotReceive().ReadAllText(Args.String); - fileSystem.DidNotReceive().FileDelete(Args.String); - fileSystem.Received(1).WriteAllText(connectionsCacheFile, "[]"); - fileSystem.DidNotReceive().WriteAllLines(Args.String, Arg.Any()); - - credentialManager.Received(1).Load(hostUri); - credentialManager.DidNotReceive().HasCredentials(); - credentialManager.DidNotReceive().Delete(Args.UriString); - credentialManager.DidNotReceive().Save(Arg.Any()); - } - [Test] public void ShouldConnectSetCredentialsTokenAndSave() {