I'm testing a FTP connection with a user/password provided by the user.
Everything work fine if I run my unit tests independently. But if I try an ordered test, running the FTP_Test_Sucessful before the FTP_Test_Unsuccessful, the FTP_Test_Unsuccessful test fail : The FTP connection is successful even if I provide a bad password is after a successful connection.
Passed          Unit Test   FTP_Test_Unsuccessful       00:00:02.3566157
Passed          Unit Test   FTP_Test_Sucessful          00:00:00.3048244
Failed          Unit Test   FTP_Test_Unsuccessful       00:00:00.2696941
Not Executed    Unit Test   FTP_Test_Sucessful          00:00:00
How could I "Reset" the FTP connection so FTP_Test_Unsuccessful actually test the connection correctly.
Here's my unit tests :
'''<summary>
'''basic Unsuccessful FTP test
'''</summary>
<TestMethod()>
Public Sub FTP_Test_Unsuccessful()
    _TestSettings.FTPEnabled = True
    _TestSettings.ChangeFTPCredentials("User", "BadPasword")
    Try
        Assert.IsFalse(_TestSettings.TestFtpSettings())
    Catch ex As AssertFailedException
        Throw 
    Catch ex As Net.WebException
        Dim FTPResponse As FtpWebResponse = DirectCast(ex.Response, FtpWebResponse)
        Assert.AreEqual(FtpStatusCode.NotLoggedIn, FTPResponse.StatusCode)
    Catch ex As Exception
        Assert.Fail()
    End Try
End Sub
'''<summary>
'''basic Sucessful FTP test
'''</summary>
<TestMethod()>
Public Sub FTP_Test_Sucessful()
    _TestSettings.FTPEnabled = True
    _TestSettings.ChangeFTPCredentials("User", "GoodPasword")
    Assert.IsTrue(_TestSettings.TestFtpSettings())
End Sub
And here is the relevant code :
Public Function TestFtpSettings() As Boolean
    Dim FTPConnectionTestedSuccessfully As Boolean = False
    Dim response As FtpWebResponse = GetTestFtpResponse()
    Dim StatusCode As System.Net.FtpStatusCode = response.StatusCode
    response.Close()
    FTPConnectionTestedSuccessfully = (StatusCode = Net.FtpStatusCode.OpeningData)
    Return FTPConnectionTestedSuccessfully
End Function
Private Function GetTestFtpResponse() As FtpWebResponse
    Dim request As FtpWebRequest = GetFTPConnection(WebRequestMethods.Ftp.ListDirectory)
    Dim response As FtpWebResponse = GetFTPResponse(request)
    Return (response)
End Function
Private Function GetFTPConnection(Method As String) As FtpWebRequest
    'Get the object used to communicate with the server.
    Dim FTPAdress As Uri = New Uri(String.Format("ftp://{0}:{1}", _
                                                 Me.FTPServerName, _
                                                 Me.FTPPort))
    Dim request As FtpWebRequest = DirectCast(WebRequest.Create(FTPAdress),  _
                                              FtpWebRequest)
    request.Method = Method
    request.Credentials = New NetworkCredential(Me.FTPUserName,
                                                Me.GetDecryptedPassword)
    Return request
End Function
Public Function GetFTPResponse(request As FtpWebRequest) As FtpWebResponse
    Return DirectCast(request.GetResponse(), FtpWebResponse)
End Function