changeset 11:9d6b28a696d1

corrección en método que verifica la autenticación del usuario
author nelo@MTEySS.neluz.int
date Sun, 13 Mar 2011 19:30:58 -0300
parents c62b77fc33f4
children 05996fa19e04
files Agendas/trunk/src/Agendas.Domain/Agenda.cs Agendas/trunk/src/Agendas.Tests/AgendaTests.cs
diffstat 2 files changed, 38 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Sun Mar 13 18:51:06 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Sun Mar 13 19:30:58 2011 -0300
@@ -29,8 +29,8 @@
 				throw new ValidationException();
 			if (_publicador != null)
 				_publicador.Publicar(evento);
-            if (EsAutenticado(_seguridad))
-                throw new ValidationException();
+            if (NoEstaAutenticado(_seguridad))
+                throw new UsuarioNoAutenticadoException();
             _eventosPublicados.Add(evento);
 		}
 
@@ -51,7 +51,7 @@
 		{
 			if (string.IsNullOrWhiteSpace(van.Titulo))
 				throw new ValidationException();
-            if (EsAutenticado(_seguridad))
+            if (NoEstaAutenticado(_seguridad))
                 throw new ValidationException();
 			_eventosPropuestos.Add(van);
 		}
@@ -66,9 +66,13 @@
             return _eventosPublicados;
         }
 
-        private bool EsAutenticado(ISeguridad seguridad) {
-            return seguridad != null && seguridad.GetPrincipal() != null && seguridad.GetPrincipal().Identity != null
-                && string.IsNullOrWhiteSpace(seguridad.GetPrincipal().Identity.Name);
+        private static bool NoEstaAutenticado(ISeguridad seguridad) {
+            return seguridad == null || seguridad.GetPrincipal() == null || seguridad.GetPrincipal().Identity == null
+                || string.IsNullOrWhiteSpace(seguridad.GetPrincipal().Identity.Name);
         }
     }
+
+    public class UsuarioNoAutenticadoException : Exception
+    {
+    }
 }
\ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Tests/AgendaTests.cs	Sun Mar 13 18:51:06 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/AgendaTests.cs	Sun Mar 13 19:30:58 2011 -0300
@@ -7,22 +7,29 @@
 using AltNetHispano.Agendas.Domain.Repositories;
 using Moq;
 using NUnit.Framework;
-using System.Security.Principal;
 
 namespace AltNetHispano.Agendas.Tests
 {
 	[TestFixture]
 	public class AgendaTests
 	{
+	    private static ISeguridad SeguridadServiceDefault
+	    {
+            get
+            {
+                var seguridad = new Mock<ISeguridad>();
+                seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles());
+                return seguridad.Object;
+            }
+	    }
+
 		[Test]
 		public void Publicar_cafe()
 		{
 			var publicador = new Mock<IPublicador>();
-            var seguridad = new Mock<ISeguridad>();
-            var agenda = new Agenda(publicador.Object, null, seguridad.Object);
+            var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault);
 
 			var cafe = EventoObjectMother.GetCafeValidoParaPublicar();
-            seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles());
 			agenda.Publicar(cafe);
 
 			publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
@@ -31,14 +38,12 @@
 		[Test]
 		public void Publicar_van_con_usuario_autenticado()
 		{
-            var seguridad = new Mock<ISeguridad>();
 			var publicador = new Mock<IPublicador>();
 
-			var agenda = new Agenda(publicador.Object, null, seguridad.Object);
+            var agenda = new Agenda(publicador.Object, null, SeguridadServiceDefault);
 
 			var van = EventoObjectMother.GetVanValidaParaPublicar();
 
-            seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles());
 			agenda.Publicar(van);
 			Assert.AreEqual(1, agenda.GetEventosPublicados().Count);
 
@@ -56,7 +61,19 @@
 
             seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalSinAutenticar());
 
-            Assert.Throws<ValidationException>(() => agenda.Publicar(van));
+            Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar(van));
+        }
+
+        [Test]
+        public void Publicar_van_sin_servicio_de_seguridad()
+        {
+            var publicador = new Mock<IPublicador>();
+
+            var agenda = new Agenda(publicador.Object, null, null);
+
+            var van = EventoObjectMother.GetVanValidaParaPublicar();
+
+            Assert.Throws<UsuarioNoAutenticadoException>(() => agenda.Publicar(van));
         }
 
 		[Test]
@@ -80,7 +97,7 @@
 			var publicador1 = new Mock<IPublicador>();
 			var publicador2 = new Mock<IPublicador>();
 
-			var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), null, null);
+            var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), null, SeguridadServiceDefault);
 
 			var van = EventoObjectMother.GetVanValidaParaPublicar();
 			agenda.Publicar(van);
@@ -96,7 +113,7 @@
 			var publicador2 = new Mock<IPublicador>();
 			var recordador1 = new Mock<IRecordador>();
 
-			var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), recordador1.Object, null);
+            var agenda = new Agenda(new CompositePublicador(new[] { publicador1.Object, publicador2.Object }), recordador1.Object, SeguridadServiceDefault);
 
 			var van = EventoObjectMother.GetVanValidaParaPublicar();
 			agenda.Publicar(van);
@@ -206,7 +223,7 @@
 		{
 			Guid vanId;
 			{
-				var agenda = new Agenda(null, null, null);
+                var agenda = new Agenda(null, null, SeguridadServiceDefault);
 				agenda.Publicar(EventoObjectMother.GetVanValidaParaPublicar());
 
 				IAgendaRepository agendaRepository = new AgendaRepository();