# HG changeset patch # User Nelo@Kenia.neluz.int # Date 1307156840 10800 # Node ID 65f0b3d70c182700c92adbf19a1363860484bce9 # Parent 7027cda13de3b25207ccbc898f9d275c3a5a656b Reordenando clases e interfaces diff -r 7027cda13de3 -r 65f0b3d70c18 Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj --- a/Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj Fri Jun 03 23:58:03 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj Sat Jun 04 00:07:20 2011 -0300 @@ -76,6 +76,10 @@ + + + + diff -r 7027cda13de3 -r 65f0b3d70c18 Agendas/trunk/src/Agendas.Web/Controllers/AccountController.cs --- a/Agendas/trunk/src/Agendas.Web/Controllers/AccountController.cs Fri Jun 03 23:58:03 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Controllers/AccountController.cs Sat Jun 04 00:07:20 2011 -0300 @@ -4,6 +4,7 @@ using System.Web.Security; using AltNetHispano.Agendas.Twitter; using AltNetHispano.Agendas.Web.Models; +using AltNetHispano.Agendas.Web.Services; namespace AltNetHispano.Agendas.Web.Controllers { @@ -98,7 +99,7 @@ return RedirectToAction("LogOn"); } - private string GetXmlContent(string xml, string tagName) + private static string GetXmlContent(string xml, string tagName) { var tagStart = "<" + tagName + ">"; var tagEnd = ""; diff -r 7027cda13de3 -r 65f0b3d70c18 Agendas/trunk/src/Agendas.Web/Models/AccountModels.cs --- a/Agendas/trunk/src/Agendas.Web/Models/AccountModels.cs Fri Jun 03 23:58:03 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Models/AccountModels.cs Sat Jun 04 00:07:20 2011 -0300 @@ -69,109 +69,7 @@ } #endregion - #region Services - // The FormsAuthentication type is sealed and contains static members, so it is difficult to - // unit test code that calls its members. The interface and helper class below demonstrate - // how to create an abstract wrapper around such a type in order to make the AccountController - // code unit testable. - - public interface IMembershipService - { - int MinPasswordLength { get; } - - bool ValidateUser(string userName, string password); - MembershipCreateStatus CreateUser(string userName, string password, string email); - bool ChangePassword(string userName, string oldPassword, string newPassword); - } - - public class AccountMembershipService : IMembershipService - { - private readonly MembershipProvider _provider; - - public AccountMembershipService() - : this(null) - { - } - - public AccountMembershipService(MembershipProvider provider) - { - _provider = provider ?? Membership.Provider; - } - - public int MinPasswordLength - { - get - { - return _provider.MinRequiredPasswordLength; - } - } - - public bool ValidateUser(string userName, string password) - { - if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName"); - if (String.IsNullOrEmpty(password)) throw new ArgumentException("Value cannot be null or empty.", "password"); - - return _provider.ValidateUser(userName, password); - } - - public MembershipCreateStatus CreateUser(string userName, string password, string email) - { - if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName"); - if (String.IsNullOrEmpty(password)) throw new ArgumentException("Value cannot be null or empty.", "password"); - if (String.IsNullOrEmpty(email)) throw new ArgumentException("Value cannot be null or empty.", "email"); - - MembershipCreateStatus status; - _provider.CreateUser(userName, password, email, null, null, true, null, out status); - return status; - } - - public bool ChangePassword(string userName, string oldPassword, string newPassword) - { - if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName"); - if (String.IsNullOrEmpty(oldPassword)) throw new ArgumentException("Value cannot be null or empty.", "oldPassword"); - if (String.IsNullOrEmpty(newPassword)) throw new ArgumentException("Value cannot be null or empty.", "newPassword"); - - // The underlying ChangePassword() will throw an exception rather - // than return false in certain failure scenarios. - try - { - MembershipUser currentUser = _provider.GetUser(userName, true /* userIsOnline */); - return currentUser.ChangePassword(oldPassword, newPassword); - } - catch (ArgumentException) - { - return false; - } - catch (MembershipPasswordException) - { - return false; - } - } - } - - public interface IFormsAuthenticationService - { - void SignIn(string userName, bool createPersistentCookie); - void SignOut(); - } - - public class FormsAuthenticationService : IFormsAuthenticationService - { - public void SignIn(string userName, bool createPersistentCookie) - { - if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName"); - - FormsAuthentication.SetAuthCookie(userName, createPersistentCookie); - } - - public void SignOut() - { - FormsAuthentication.SignOut(); - } - } - #endregion - - #region Validation + #region Validation public static class AccountValidation { public static string ErrorCodeToString(MembershipCreateStatus createStatus) diff -r 7027cda13de3 -r 65f0b3d70c18 Agendas/trunk/src/Agendas.Web/Services/AccountMembershipService.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Web/Services/AccountMembershipService.cs Sat Jun 04 00:07:20 2011 -0300 @@ -0,0 +1,70 @@ +using System; +using System.Web.Security; + +namespace AltNetHispano.Agendas.Web.Services +{ + public class AccountMembershipService : IMembershipService + { + private readonly MembershipProvider _provider; + + public AccountMembershipService() + : this(null) + { + } + + public AccountMembershipService(MembershipProvider provider) + { + _provider = provider ?? Membership.Provider; + } + + public int MinPasswordLength + { + get + { + return _provider.MinRequiredPasswordLength; + } + } + + public bool ValidateUser(string userName, string password) + { + if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName"); + if (String.IsNullOrEmpty(password)) throw new ArgumentException("Value cannot be null or empty.", "password"); + + return _provider.ValidateUser(userName, password); + } + + public MembershipCreateStatus CreateUser(string userName, string password, string email) + { + if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName"); + if (String.IsNullOrEmpty(password)) throw new ArgumentException("Value cannot be null or empty.", "password"); + if (String.IsNullOrEmpty(email)) throw new ArgumentException("Value cannot be null or empty.", "email"); + + MembershipCreateStatus status; + _provider.CreateUser(userName, password, email, null, null, true, null, out status); + return status; + } + + public bool ChangePassword(string userName, string oldPassword, string newPassword) + { + if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName"); + if (String.IsNullOrEmpty(oldPassword)) throw new ArgumentException("Value cannot be null or empty.", "oldPassword"); + if (String.IsNullOrEmpty(newPassword)) throw new ArgumentException("Value cannot be null or empty.", "newPassword"); + + // The underlying ChangePassword() will throw an exception rather + // than return false in certain failure scenarios. + try + { + MembershipUser currentUser = _provider.GetUser(userName, true /* userIsOnline */); + return currentUser.ChangePassword(oldPassword, newPassword); + } + catch (ArgumentException) + { + return false; + } + catch (MembershipPasswordException) + { + return false; + } + } + } +} \ No newline at end of file diff -r 7027cda13de3 -r 65f0b3d70c18 Agendas/trunk/src/Agendas.Web/Services/FormsAuthenticationService.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Web/Services/FormsAuthenticationService.cs Sat Jun 04 00:07:20 2011 -0300 @@ -0,0 +1,20 @@ +using System; +using System.Web.Security; + +namespace AltNetHispano.Agendas.Web.Services +{ + public class FormsAuthenticationService : IFormsAuthenticationService + { + public void SignIn(string userName, bool createPersistentCookie) + { + if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName"); + + FormsAuthentication.SetAuthCookie(userName, createPersistentCookie); + } + + public void SignOut() + { + FormsAuthentication.SignOut(); + } + } +} \ No newline at end of file diff -r 7027cda13de3 -r 65f0b3d70c18 Agendas/trunk/src/Agendas.Web/Services/IFormsAuthenticationService.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Web/Services/IFormsAuthenticationService.cs Sat Jun 04 00:07:20 2011 -0300 @@ -0,0 +1,8 @@ +namespace AltNetHispano.Agendas.Web.Services +{ + public interface IFormsAuthenticationService + { + void SignIn(string userName, bool createPersistentCookie); + void SignOut(); + } +} \ No newline at end of file diff -r 7027cda13de3 -r 65f0b3d70c18 Agendas/trunk/src/Agendas.Web/Services/IMembershipService.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Web/Services/IMembershipService.cs Sat Jun 04 00:07:20 2011 -0300 @@ -0,0 +1,13 @@ +using System.Web.Security; + +namespace AltNetHispano.Agendas.Web.Services +{ + public interface IMembershipService + { + int MinPasswordLength { get; } + + bool ValidateUser(string userName, string password); + MembershipCreateStatus CreateUser(string userName, string password, string email); + bool ChangePassword(string userName, string oldPassword, string newPassword); + } +} \ No newline at end of file