changeset 9:c90492faf268

Se implementa seguridad a través del constructor y no como parámetro Se valida autenticación al Publicar.
author juanjose.montesdeocaarbos
date Sat, 12 Feb 2011 12:22:36 -0300
parents cae27d7eb697
children c62b77fc33f4
files Agendas/trunk/src/Agendas.Domain/Agenda.cs Agendas/trunk/src/Agendas.Tests/AgendaTests.cs Agendas/trunk/src/Agendas.Tests/SeguridadObjectMother.cs
diffstat 3 files changed, 41 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Sat Feb 12 11:12:18 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Sat Feb 12 12:22:36 2011 -0300
@@ -27,9 +27,10 @@
 		{
 			if (!evento.Fecha.HasValue)
 				throw new ValidationException();
-			
 			if (_publicador != null)
 				_publicador.Publicar(evento);
+            if (EsAutenticado(_seguridad))
+                throw new ValidationException();
             _eventosPublicados.Add(evento);
 		}
 
@@ -50,7 +51,7 @@
 		{
 			if (string.IsNullOrWhiteSpace(van.Titulo))
 				throw new ValidationException();
-            if (_seguridad.GetPrincipal() == null || _seguridad.GetPrincipal().Identity == null)
+            if (EsAutenticado(_seguridad))
                 throw new ValidationException();
 			_eventosPropuestos.Add(van);
 		}
@@ -64,5 +65,10 @@
         {
             return _eventosPublicados;
         }
+
+        private bool EsAutenticado(ISeguridad seguridad) {
+            return seguridad != null && seguridad.GetPrincipal() != null && seguridad.GetPrincipal().Identity != null
+                && string.IsNullOrWhiteSpace(seguridad.GetPrincipal().Identity.Name);
+        }
     }
 }
\ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Tests/AgendaTests.cs	Sat Feb 12 11:12:18 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/AgendaTests.cs	Sat Feb 12 12:22:36 2011 -0300
@@ -18,30 +18,47 @@
 		public void Publicar_cafe()
 		{
 			var publicador = new Mock<IPublicador>();
-
-			var agenda = new Agenda(publicador.Object, null, null);
+            var seguridad = new Mock<ISeguridad>();
+            var agenda = new Agenda(publicador.Object, null, seguridad.Object);
 
 			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));
 		}
 
 		[Test]
-		public void Publicar_van()
+		public void Publicar_van_con_usuario_autenticado()
 		{
+            var seguridad = new Mock<ISeguridad>();
 			var publicador = new Mock<IPublicador>();
 
-			var agenda = new Agenda(publicador.Object, null, null);
+			var agenda = new Agenda(publicador.Object, null, seguridad.Object);
 
 			var van = EventoObjectMother.GetVanValidaParaPublicar();
 
+            seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles());
 			agenda.Publicar(van);
 			Assert.AreEqual(1, agenda.GetEventosPublicados().Count);
 
 			publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1));
 		}
 
+        [Test]
+        public void Publicar_van_sin_usuario_autenticado() {
+            var seguridad = new Mock<ISeguridad>();
+            var publicador = new Mock<IPublicador>();
+
+            var agenda = new Agenda(publicador.Object, null, seguridad.Object);
+
+            var van = EventoObjectMother.GetVanValidaParaPublicar();
+
+            seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalSinAutenticar());
+
+            Assert.Throws<ValidationException>(() => agenda.Publicar(van));
+        }
+
 		[Test]
 		public void Error_al_publicar_van()
 		{
--- a/Agendas/trunk/src/Agendas.Tests/SeguridadObjectMother.cs	Sat Feb 12 11:12:18 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Tests/SeguridadObjectMother.cs	Sat Feb 12 12:22:36 2011 -0300
@@ -11,10 +11,21 @@
             return new GenericPrincipal(GetGenericIdentityAutenticado(), null);
         }
 
-        public static GenericIdentity GetGenericIdentityAutenticado() {
+        public static GenericPrincipal GetGenericPrincipalSinAutenticar()
+        {
+            return new GenericPrincipal(GetGenericIdentitySinAutenticar(), null);
+        }
+
+        public static GenericIdentity GetGenericIdentityAutenticado()
+        {
             return new GenericIdentity("neluz");
         }
 
+        public static GenericIdentity GetGenericIdentitySinAutenticar()
+        {
+            return new GenericIdentity("");
+        }
+
         
     }
 }