public void TestDataHandler(string line) { using (ShimsContext.Create()) { SMTPTransaction actualTransaction = null; string decodedReponse = null; IAuthMethod actualAuthMethod = null; var expectedResponse = new SMTPResponse(SMTPStatusCode.Okay); ShimAUTHHandler.HandleResponseSMTPTransactionStringIAuthMethod = (transaction, data, authMethod) => { actualTransaction = transaction; decodedReponse = data; actualAuthMethod = authMethod; return(expectedResponse); }; var method = new StubIAuthMethod(); var encoded = Convert.ToBase64String(Encoding.ASCII.GetBytes(line)); var response = AUTHHandler.DataHandler(Transaction, encoded, method); Assert.Same(method, actualAuthMethod); Assert.Same(expectedResponse, response); Assert.Equal(Transaction, actualTransaction); Assert.Equal(line, decodedReponse); } }
public void TestExecutSuccess(string parameters, string expectedDecoded) { using (ShimsContext.Create()) { AddTransactionProperty("Authenticated", false); AddCoreListProperty("EHLOLines", new List <Func <SMTPTransaction, string> >()); SMTPTransaction actualTransaction = null; string decodedReponse = null; IAuthMethod actualAuthMethod = null; var expectedResponse = new SMTPResponse(SMTPStatusCode.Okay); ShimAUTHHandler.HandleResponseSMTPTransactionStringIAuthMethod = (transaction, data, authMethod) => { actualTransaction = transaction; decodedReponse = data; actualAuthMethod = authMethod; return(expectedResponse); }; var method = new StubIAuthMethod(); var loader = new StubIAuthMethodLoader { GetModules = () => new List <Tuple <string, IAuthMethod> > { new Tuple <string, IAuthMethod>("TEST", method) } }; var handler = new AUTHHandler(loader); handler.Initialize(Core); var response = handler.DoExecute(Transaction, parameters); Assert.Same(method, actualAuthMethod); Assert.Same(expectedResponse, response); Assert.Equal(Transaction, actualTransaction); Assert.Equal(expectedDecoded, decodedReponse); } }
public AuthUsersController(SSAuthContext context, IAuthMethod authMethod) { _context = context; _authMethod = authMethod; }
public static SMTPResponse HandleResponse(SMTPTransaction transaction, string decodedReponse, IAuthMethod method) { string challenge; if (!method.ProcessResponse(transaction, decodedReponse, out challenge)) { return(new SMTPResponse(SMTPStatusCode.AuthFailed, challenge != null ? new[] { challenge } : new string[0])); } if (challenge != null) { transaction.StartDataMode(DataLineHandler, s => DataHandler(transaction, s, method)); return(new SMTPResponse(SMTPStatusCode.AuthContinue, Base64Encode(challenge))); } transaction.SetProperty("Authenticated", true, true); return(new SMTPResponse(SMTPStatusCode.AuthSuccess)); }
public static SMTPResponse DataHandler(SMTPTransaction transaction, string reponse, IAuthMethod method) { if (transaction == null) { throw new ArgumentNullException(); } if (reponse == null) { throw new ArgumentNullException(); } if (method == null) { throw new ArgumentNullException(); } if (reponse.Equals("*")) { method.Abort(transaction); return(new SMTPResponse(SMTPStatusCode.ParamError)); } string decoded; try { decoded = Base64Decode(reponse); } catch (FormatException) { return(new SMTPResponse(SMTPStatusCode.SyntaxError)); } return(HandleResponse(transaction, decoded, method)); }