# HG changeset patch # User juanjose.montesdeocaarbos # Date 1297524156 10800 # Node ID c90492faf268da60db2f4682dcd429191c390a86 # Parent cae27d7eb6978e07d0dd3e8f11a0c465af70aa7e Se implementa seguridad a través del constructor y no como parámetro Se valida autenticación al Publicar. diff -r cae27d7eb697 -r c90492faf268 Agendas/trunk/src/Agendas.Domain/Agenda.cs --- 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 diff -r cae27d7eb697 -r c90492faf268 Agendas/trunk/src/Agendas.Tests/AgendaTests.cs --- 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(); - - var agenda = new Agenda(publicador.Object, null, null); + var seguridad = new Mock(); + 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()), Times.Exactly(1)); } [Test] - public void Publicar_van() + public void Publicar_van_con_usuario_autenticado() { + var seguridad = new Mock(); var publicador = new Mock(); - 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()), Times.Exactly(1)); } + [Test] + public void Publicar_van_sin_usuario_autenticado() { + var seguridad = new Mock(); + var publicador = new Mock(); + + var agenda = new Agenda(publicador.Object, null, seguridad.Object); + + var van = EventoObjectMother.GetVanValidaParaPublicar(); + + seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalSinAutenticar()); + + Assert.Throws(() => agenda.Publicar(van)); + } + [Test] public void Error_al_publicar_van() { diff -r cae27d7eb697 -r c90492faf268 Agendas/trunk/src/Agendas.Tests/SeguridadObjectMother.cs --- 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(""); + } + } }