Mercurial > altnet-hispano
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(""); + } + } }