# HG changeset patch # User juanjose.montesdeocaarbos # Date 1297519938 10800 # Node ID cae27d7eb6978e07d0dd3e8f11a0c465af70aa7e # Parent deee2ca97f5b75ac704fff62e1f10eb90a2b688a Se agregó ISeguridad para validar autenticaciones de usuarios. Agenda.Proponer modificado para validar que solo pueden Proponer eventos los usuarios autenticados. diff -r deee2ca97f5b -r cae27d7eb697 Agendas/trunk/src/Agendas.Domain/Agenda.cs --- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs Tue Feb 08 07:56:53 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs Sat Feb 12 11:12:18 2011 -0300 @@ -10,11 +10,13 @@ private readonly IList _eventosPublicados; private readonly IPublicador _publicador; private readonly IRecordador _recordador; + private readonly ISeguridad _seguridad; - public Agenda(IPublicador publicador, IRecordador recordador) + public Agenda(IPublicador publicador, IRecordador recordador, ISeguridad seguridad) { _publicador = publicador; _recordador = recordador; + _seguridad = seguridad; _eventosPropuestos = new List(); _eventosPublicados = new List(); } @@ -48,6 +50,8 @@ { if (string.IsNullOrWhiteSpace(van.Titulo)) throw new ValidationException(); + if (_seguridad.GetPrincipal() == null || _seguridad.GetPrincipal().Identity == null) + throw new ValidationException(); _eventosPropuestos.Add(van); } diff -r deee2ca97f5b -r cae27d7eb697 Agendas/trunk/src/Agendas.Domain/Agendas.Domain.csproj --- a/Agendas/trunk/src/Agendas.Domain/Agendas.Domain.csproj Tue Feb 08 07:56:53 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agendas.Domain.csproj Sat Feb 12 11:12:18 2011 -0300 @@ -46,6 +46,7 @@ + diff -r deee2ca97f5b -r cae27d7eb697 Agendas/trunk/src/Agendas.Domain/ISeguridad.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Domain/ISeguridad.cs Sat Feb 12 11:12:18 2011 -0300 @@ -0,0 +1,8 @@ +using System.Security.Principal; +namespace AltNetHispano.Agendas.Domain +{ + public interface ISeguridad + { + IPrincipal GetPrincipal(); + } +} diff -r deee2ca97f5b -r cae27d7eb697 Agendas/trunk/src/Agendas.Tests/AgendaTests.cs --- a/Agendas/trunk/src/Agendas.Tests/AgendaTests.cs Tue Feb 08 07:56:53 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/AgendaTests.cs Sat Feb 12 11:12:18 2011 -0300 @@ -7,6 +7,7 @@ using AltNetHispano.Agendas.Domain.Repositories; using Moq; using NUnit.Framework; +using System.Security.Principal; namespace AltNetHispano.Agendas.Tests { @@ -18,7 +19,7 @@ { var publicador = new Mock(); - var agenda = new Agenda(publicador.Object, null); + var agenda = new Agenda(publicador.Object, null, null); var cafe = EventoObjectMother.GetCafeValidoParaPublicar(); agenda.Publicar(cafe); @@ -31,7 +32,7 @@ { var publicador = new Mock(); - var agenda = new Agenda(publicador.Object, null); + var agenda = new Agenda(publicador.Object, null, null); var van = EventoObjectMother.GetVanValidaParaPublicar(); @@ -47,7 +48,7 @@ var publicador = new Mock(); publicador.Setup(p => p.Publicar(It.IsAny())).Throws(new Exception("Error intencional")); - var agenda = new Agenda(publicador.Object, null); + var agenda = new Agenda(publicador.Object, null, null); var van = EventoObjectMother.GetVanValidaParaPublicar(); Assert.Throws(() => agenda.Publicar(van)); @@ -62,7 +63,7 @@ var publicador1 = new Mock(); var publicador2 = new Mock(); - var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), null); + var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), null, null); var van = EventoObjectMother.GetVanValidaParaPublicar(); agenda.Publicar(van); @@ -78,7 +79,7 @@ var publicador2 = new Mock(); var recordador1 = new Mock(); - var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), recordador1.Object); + var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), recordador1.Object, null); var van = EventoObjectMother.GetVanValidaParaPublicar(); agenda.Publicar(van); @@ -93,11 +94,14 @@ } [Test] - public void Propuesta_de_van() + public void Propuesta_de_van_con_usuario_autenticado() { var van = new Van{Titulo = "Van propuesta"}; - var agenda = new Agenda(null, null); + var seguridad = new Mock(); + var agenda = new Agenda(null, null, seguridad.Object); + + seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); agenda.Proponer(van); IList eventosPropuestos = agenda.GetEventosPropuestos(); @@ -109,10 +113,12 @@ [Test] public void Verificar_propuesta_separada_de_publicacion() { - var agenda = new Agenda(null, null); + var seguridad = new Mock(); + var agenda = new Agenda(null, null, seguridad.Object); var vanPropuesta = new Van { Titulo = "Van propuesta" }; var vanPublicada = EventoObjectMother.GetVanValidaParaPublicar(); + seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); agenda.Proponer(vanPropuesta); agenda.Publicar(vanPublicada); @@ -129,19 +135,24 @@ { var van = new Van(); - var agenda = new Agenda(null, null); - Assert.Throws(() => agenda.Proponer(van)); + var seguridad = new Mock(); + var agenda = new Agenda(null, null, seguridad.Object); + + Assert.Throws(() => agenda.Proponer(van)); Assert.AreEqual(Guid.Empty, van.Id); } [Test] public void Agendar_van_propuesta_sin_fecha() { - var agenda = new Agenda(null, null); + var seguridad = new Mock(); + var agenda = new Agenda(null, null, seguridad.Object); + + seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); { var van = new Van {Titulo = "Van propuesta"}; - agenda.Proponer(van); + agenda.Proponer(van); } { @@ -154,11 +165,14 @@ [Test] public void Agendar_van_propuesta_sin_ponente() { - var agenda = new Agenda(null, null); + var seguridad = new Mock(); + var agenda = new Agenda(null, null, seguridad.Object); + + seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); { var van = new Van { Titulo = "Van propuesta" }; - agenda.Proponer(van); + agenda.Proponer(van); } { @@ -175,7 +189,7 @@ { Guid vanId; { - var agenda = new Agenda(null, null); + var agenda = new Agenda(null, null, null); agenda.Publicar(EventoObjectMother.GetVanValidaParaPublicar()); IAgendaRepository agendaRepository = new AgendaRepository(); diff -r deee2ca97f5b -r cae27d7eb697 Agendas/trunk/src/Agendas.Tests/Agendas.Tests.csproj --- a/Agendas/trunk/src/Agendas.Tests/Agendas.Tests.csproj Tue Feb 08 07:56:53 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/Agendas.Tests.csproj Sat Feb 12 11:12:18 2011 -0300 @@ -50,6 +50,7 @@ + diff -r deee2ca97f5b -r cae27d7eb697 Agendas/trunk/src/Agendas.Tests/SeguridadObjectMother.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Tests/SeguridadObjectMother.cs Sat Feb 12 11:12:18 2011 -0300 @@ -0,0 +1,20 @@ +using System; +using AltNetHispano.Agendas.Domain; +using System.Security.Principal; + +namespace AltNetHispano.Agendas.Tests +{ + public static class SeguridadObjectMother + { + public static GenericPrincipal GetGenericPrincipalAutenticadoSinRoles() + { + return new GenericPrincipal(GetGenericIdentityAutenticado(), null); + } + + public static GenericIdentity GetGenericIdentityAutenticado() { + return new GenericIdentity("neluz"); + } + + + } +}