public void SshAuthenticationExceptionConstructorTest2() { string message = string.Empty; // TODO: Initialize to an appropriate value Exception innerException = null; // TODO: Initialize to an appropriate value SshAuthenticationException target = new SshAuthenticationException(message, innerException); Assert.Inconclusive("TODO: Implement code to verify target"); }
protected void Act() { try { _connectionInfo.Authenticate(_sessionMock.Object, _serviceFactoryMock.Object); } catch (SshAuthenticationException ex) { _actualException = ex; } }
protected override void Act() { try { ClientAuthentication.Authenticate(ConnectionInfoMock.Object, SessionMock.Object); Assert.Fail(); } catch (SshAuthenticationException ex) { _actualException = ex; } }
protected void Arrange() { _serviceFactoryMock = new Mock<IServiceFactory>(MockBehavior.Strict); _clientAuthenticationMock = new Mock<IClientAuthentication>(MockBehavior.Strict); _sessionMock = new Mock<ISession>(MockBehavior.Strict); _connectionInfo = new ConnectionInfo(Resources.HOST, int.Parse(Resources.PORT), Resources.USERNAME, ProxyTypes.None, Resources.HOST, int.Parse(Resources.PORT), Resources.USERNAME, Resources.PASSWORD, new KeyboardInteractiveAuthenticationMethod(Resources.USERNAME)); _authenticationException = new SshAuthenticationException(); _serviceFactoryMock.Setup(p => p.CreateClientAuthentication()).Returns(_clientAuthenticationMock.Object); _clientAuthenticationMock.Setup(p => p.Authenticate(_connectionInfo, _sessionMock.Object)) .Throws(_authenticationException); }
private bool TryAuthenticate(Session session, IList<string> allowedAuthenticationMethods, IList<AuthenticationMethod> failedAuthenticationMethods, ref SshAuthenticationException authenticationException) { if (!allowedAuthenticationMethods.Any()) { authenticationException = new SshAuthenticationException("No authentication methods defined on SSH server."); return false; } // we want to try authentication methods in the order in which they were // passed in the ctor, not the order in which the SSH server returns // the allowed authentication methods var matchingAuthenticationMethods = AuthenticationMethods.Where(a => allowedAuthenticationMethods.Contains(a.Name)).ToList(); if (!matchingAuthenticationMethods.Any()) { authenticationException = new SshAuthenticationException(string.Format("No suitable authentication method found to complete authentication ({0}).", string.Join(",", allowedAuthenticationMethods.ToArray()))); return false; } foreach (var authenticationMethod in matchingAuthenticationMethods) { if (failedAuthenticationMethods.Contains(authenticationMethod)) continue; var authenticationResult = authenticationMethod.Authenticate(session); switch (authenticationResult) { case AuthenticationResult.PartialSuccess: if (TryAuthenticate(session, authenticationMethod.AllowedAuthentications.ToList(), failedAuthenticationMethods, ref authenticationException)) authenticationResult = AuthenticationResult.Success; break; case AuthenticationResult.Failure: failedAuthenticationMethods.Add(authenticationMethod); authenticationException = new SshAuthenticationException(string.Format("Permission denied ({0}).", authenticationMethod.Name)); break; case AuthenticationResult.Success: authenticationException = null; break; } if (authenticationResult == AuthenticationResult.Success) return true; } return false; }
private static bool TryAuthenticate(ISession session, AuthenticationState authenticationState, ICollection<string> allowedAuthenticationMethods, ref SshAuthenticationException authenticationException) { if (allowedAuthenticationMethods.Count == 0) { authenticationException = new SshAuthenticationException("No authentication methods defined on SSH server."); return false; } // we want to try authentication methods in the order in which they were // passed in the ctor, not the order in which the SSH server returns // the allowed authentication methods var matchingAuthenticationMethods = authenticationState.SupportedAuthenticationMethods.Where(a => allowedAuthenticationMethods.Contains(a.Name)).ToList(); if (matchingAuthenticationMethods.Count == 0) { authenticationException = new SshAuthenticationException(string.Format("No suitable authentication method found to complete authentication ({0}).", string.Join(",", allowedAuthenticationMethods.ToArray()))); return false; } foreach (var authenticationMethod in GetOrderedAuthenticationMethods(authenticationState, matchingAuthenticationMethods)) { if (authenticationState.FailedAuthenticationMethods.Contains(authenticationMethod)) continue; // when the authentication method was previously executed, then skip the authentication // method as long as there's another authentication method to try; this is done to avoid // a stack overflow for servers that do not update the list of allowed authentication // methods after a partial success if (!authenticationState.ExecutedAuthenticationMethods.Contains(authenticationMethod)) { // update state to reflect previosuly executed authentication methods authenticationState.ExecutedAuthenticationMethods.Add(authenticationMethod); } var authenticationResult = authenticationMethod.Authenticate(session); switch (authenticationResult) { case AuthenticationResult.PartialSuccess: if (TryAuthenticate(session, authenticationState, authenticationMethod.AllowedAuthentications, ref authenticationException)) { authenticationResult = AuthenticationResult.Success; } break; case AuthenticationResult.Failure: authenticationState.FailedAuthenticationMethods.Add(authenticationMethod); authenticationException = new SshAuthenticationException(string.Format("Permission denied ({0}).", authenticationMethod.Name)); break; case AuthenticationResult.Success: authenticationException = null; break; } if (authenticationResult == AuthenticationResult.Success) return true; } return false; }
public void SshAuthenticationExceptionConstructorTest() { SshAuthenticationException target = new SshAuthenticationException(); Assert.Inconclusive("TODO: Implement code to verify target"); }