Mercurial > altnet-hispano
changeset 8:cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
Agenda.Proponer modificado para validar que solo pueden Proponer eventos
los usuarios autenticados.
author | juanjose.montesdeocaarbos |
---|---|
date | Sat, 12 Feb 2011 11:12:18 -0300 |
parents | deee2ca97f5b |
children | c90492faf268 |
files | Agendas/trunk/src/Agendas.Domain/Agenda.cs Agendas/trunk/src/Agendas.Domain/Agendas.Domain.csproj Agendas/trunk/src/Agendas.Domain/ISeguridad.cs Agendas/trunk/src/Agendas.Tests/AgendaTests.cs Agendas/trunk/src/Agendas.Tests/Agendas.Tests.csproj Agendas/trunk/src/Agendas.Tests/SeguridadObjectMother.cs |
diffstat | 6 files changed, 64 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- 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<Evento> _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<Evento>(); _eventosPublicados = new List<Evento>(); } @@ -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); }
--- 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 @@ <Compile Include="Evento.cs" /> <Compile Include="Exceptions\ValidationException.cs" /> <Compile Include="IRecordador.cs" /> + <Compile Include="ISeguridad.cs" /> <Compile Include="Repositories\IEventoRepository.cs" /> <Compile Include="IPublicador.cs" /> <Compile Include="Properties\AssemblyInfo.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(); + } +}
--- 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<IPublicador>(); - 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<IPublicador>(); - 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<IPublicador>(); publicador.Setup(p => p.Publicar(It.IsAny<Evento>())).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<Exception>(() => agenda.Publicar(van)); @@ -62,7 +63,7 @@ var publicador1 = new Mock<IPublicador>(); var publicador2 = new Mock<IPublicador>(); - 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<IPublicador>(); var recordador1 = new Mock<IRecordador>(); - 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<ISeguridad>(); + var agenda = new Agenda(null, null, seguridad.Object); + + seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); agenda.Proponer(van); IList<Evento> 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<ISeguridad>(); + 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<ValidationException>(() => agenda.Proponer(van)); + var seguridad = new Mock<ISeguridad>(); + var agenda = new Agenda(null, null, seguridad.Object); + + Assert.Throws<ValidationException>(() => 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<ISeguridad>(); + 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<ISeguridad>(); + 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();
--- 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 @@ <Compile Include="EventoObjectMother.cs" /> <Compile Include="EventoTests.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> + <Compile Include="SeguridadObjectMother.cs" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\Agendas.Domain\Agendas.Domain.csproj">
--- /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"); + } + + + } +}