Files
ssh.net/test/Renci.SshNet.Tests/Classes/ClientAuthenticationTest_Success_MultiList_PostponePartialAccessAuthenticationMethod.cs
mus65 c0a353a4de Cleanup formatting and style and enforce it in CI (#1380)
* Preparation to enforce formatting and style in CI

- enabled IDE0055 to enforce formatting on build
- disabled SA1137 and SA1025 because they are already
  covered by IDE0055
- disabled SA1021 because it conflicts with csharp_space_after_cast

* Cleanup formatting and style on codebase

This commit has no manual changes, it is the result
of running "dotnet format whitespace" and "dotnet format style"

* new formatting fixes after merge

* appveyor: set git autocrlf

as suggested by sharwell to hopefully fix Windows CI.

* use autocrlf input

to hopefully fix Linux tests

* fix formatting

* use autocrlf input for Linux only

* set csharp_space_after_cast to false

* Revert SA1021 suppression

---------

Co-authored-by: Robert Hague <rh@johnstreetcapital.com>
2024-05-17 22:34:27 +02:00

101 lines
5.3 KiB
C#

using System.Collections.Generic;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
namespace Renci.SshNet.Tests.Classes
{
[TestClass]
public class ClientAuthenticationTest_Success_MultiList_PostponePartialAccessAuthenticationMethod : ClientAuthenticationTestBase
{
private int _partialSuccessLimit;
private ClientAuthentication _clientAuthentication;
protected override void SetupData()
{
_partialSuccessLimit = 3;
}
protected override void SetupMocks()
{
var seq = new MockSequence();
_ = SessionMock.InSequence(seq)
.Setup(p => p.RegisterMessage("SSH_MSG_USERAUTH_FAILURE"));
_ = SessionMock.InSequence(seq)
.Setup(p => p.RegisterMessage("SSH_MSG_USERAUTH_SUCCESS"));
_ = SessionMock.InSequence(seq)
.Setup(p => p.RegisterMessage("SSH_MSG_USERAUTH_BANNER"));
_ = ConnectionInfoMock.InSequence(seq)
.Setup(p => p.CreateNoneAuthenticationMethod())
.Returns(NoneAuthenticationMethodMock.Object);
_ = NoneAuthenticationMethodMock.InSequence(seq)
.Setup(p => p.Authenticate(SessionMock.Object))
.Returns(AuthenticationResult.Failure);
_ = ConnectionInfoMock.InSequence(seq)
.Setup(p => p.AuthenticationMethods)
.Returns(new List<IAuthenticationMethod>
{
KeyboardInteractiveAuthenticationMethodMock.Object,
PasswordAuthenticationMethodMock.Object,
PublicKeyAuthenticationMethodMock.Object
});
_ = NoneAuthenticationMethodMock.InSequence(seq)
.Setup(p => p.AllowedAuthentications)
.Returns(new[] { "password" });
_ = KeyboardInteractiveAuthenticationMethodMock.InSequence(seq)
.Setup(p => p.Name)
.Returns("keyboard-interactive");
_ = PasswordAuthenticationMethodMock.InSequence(seq)
.Setup(p => p.Name)
.Returns("password");
_ = PublicKeyAuthenticationMethodMock.InSequence(seq)
.Setup(p => p.Name)
.Returns("publickey");
_ = PasswordAuthenticationMethodMock.InSequence(seq)
.Setup(p => p.Authenticate(SessionMock.Object))
.Returns(AuthenticationResult.PartialSuccess);
_ = PasswordAuthenticationMethodMock.InSequence(seq)
.Setup(p => p.AllowedAuthentications)
.Returns(new[] { "password", "publickey" });
_ = KeyboardInteractiveAuthenticationMethodMock.InSequence(seq)
.Setup(p => p.Name)
.Returns("keyboard-interactive");
_ = PasswordAuthenticationMethodMock.InSequence(seq)
.Setup(p => p.Name)
.Returns("password");
_ = PublicKeyAuthenticationMethodMock.InSequence(seq)
.Setup(p => p.Name)
.Returns("publickey");
_ = PublicKeyAuthenticationMethodMock.InSequence(seq)
.Setup(p => p.Authenticate(SessionMock.Object))
.Returns(AuthenticationResult.Failure);
_ = PublicKeyAuthenticationMethodMock.InSequence(seq)
.Setup(p => p.Name)
.Returns("publickey");
_ = PasswordAuthenticationMethodMock.InSequence(seq)
.Setup(p => p.Authenticate(SessionMock.Object))
.Returns(AuthenticationResult.Success);
_ = SessionMock.InSequence(seq)
.Setup(p => p.UnRegisterMessage("SSH_MSG_USERAUTH_FAILURE"));
_ = SessionMock.InSequence(seq)
.Setup(p => p.UnRegisterMessage("SSH_MSG_USERAUTH_SUCCESS"));
_ = SessionMock.InSequence(seq)
.Setup(p => p.UnRegisterMessage("SSH_MSG_USERAUTH_BANNER"));
}
protected override void Arrange()
{
base.Arrange();
_clientAuthentication = new ClientAuthentication(_partialSuccessLimit);
}
protected override void Act()
{
_clientAuthentication.Authenticate(ConnectionInfoMock.Object, SessionMock.Object);
}
}
}