Mercurial > altnet-hispano
annotate Agendas/trunk/src/Agendas.Tests/AgendaTests.cs @ 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 |
rev | line source |
---|---|
2 | 1 using System; |
4 | 2 using System.Collections.Generic; |
2 | 3 using System.Linq; |
4 using Agendas.Repositories.Memory; | |
5 using AltNetHispano.Agendas.Domain; | |
4 | 6 using AltNetHispano.Agendas.Domain.Exceptions; |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
7 using AltNetHispano.Agendas.Domain.Repositories; |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
8 using Moq; |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
9 using NUnit.Framework; |
8
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
10 using System.Security.Principal; |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
11 |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
12 namespace AltNetHispano.Agendas.Tests |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
13 { |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
14 [TestFixture] |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
15 public class AgendaTests |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
16 { |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
17 [Test] |
3 | 18 public void Publicar_cafe() |
19 { | |
20 var publicador = new Mock<IPublicador>(); | |
21 | |
8
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
22 var agenda = new Agenda(publicador.Object, null, null); |
3 | 23 |
4 | 24 var cafe = EventoObjectMother.GetCafeValidoParaPublicar(); |
3 | 25 agenda.Publicar(cafe); |
26 | |
27 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | |
28 } | |
29 | |
30 [Test] | |
1 | 31 public void Publicar_van() |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
32 { |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
33 var publicador = new Mock<IPublicador>(); |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
34 |
8
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
35 var agenda = new Agenda(publicador.Object, null, null); |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
36 |
4 | 37 var van = EventoObjectMother.GetVanValidaParaPublicar(); |
38 | |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
39 agenda.Publicar(van); |
7
deee2ca97f5b
Se modificó Agenda para exponer los eventos a través de métodos y no a través de propiedades. (Servicio de Negocios vs Objeto Persistente).
juanjose.montesdeocaarbos
parents:
6
diff
changeset
|
40 Assert.AreEqual(1, agenda.GetEventosPublicados().Count); |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
41 |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
42 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
43 } |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
44 |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
45 [Test] |
4 | 46 public void Error_al_publicar_van() |
47 { | |
48 var publicador = new Mock<IPublicador>(); | |
49 publicador.Setup(p => p.Publicar(It.IsAny<Evento>())).Throws(new Exception("Error intencional")); | |
50 | |
8
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
51 var agenda = new Agenda(publicador.Object, null, null); |
4 | 52 |
53 var van = EventoObjectMother.GetVanValidaParaPublicar(); | |
54 Assert.Throws<Exception>(() => agenda.Publicar(van)); | |
7
deee2ca97f5b
Se modificó Agenda para exponer los eventos a través de métodos y no a través de propiedades. (Servicio de Negocios vs Objeto Persistente).
juanjose.montesdeocaarbos
parents:
6
diff
changeset
|
55 Assert.AreEqual(0, agenda.GetEventosPublicados().Count); |
4 | 56 |
57 publicador.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | |
58 } | |
59 | |
60 [Test] | |
1 | 61 public void Publicar_van_multiples_publicadores() |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
62 { |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
63 var publicador1 = new Mock<IPublicador>(); |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
64 var publicador2 = new Mock<IPublicador>(); |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
65 |
8
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
66 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), null, null); |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
67 |
4 | 68 var van = EventoObjectMother.GetVanValidaParaPublicar(); |
69 agenda.Publicar(van); | |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
70 |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
71 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
72 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
73 } |
1 | 74 |
75 [Test] | |
76 public void Publicar_y_recordar_van() | |
77 { | |
78 var publicador1 = new Mock<IPublicador>(); | |
79 var publicador2 = new Mock<IPublicador>(); | |
80 var recordador1 = new Mock<IRecordador>(); | |
81 | |
8
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
82 var agenda = new Agenda(new CompositePublicador(new[] {publicador1.Object, publicador2.Object}), recordador1.Object, null); |
1 | 83 |
4 | 84 var van = EventoObjectMother.GetVanValidaParaPublicar(); |
1 | 85 agenda.Publicar(van); |
86 | |
87 agenda.Recordar(van); | |
88 | |
89 publicador1.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | |
90 publicador2.Verify(p => p.Publicar(It.IsAny<Evento>()), Times.Exactly(1)); | |
91 recordador1.Verify(r => r.Recordar(It.IsAny<Evento>()), Times.Exactly(1)); | |
92 | |
7
deee2ca97f5b
Se modificó Agenda para exponer los eventos a través de métodos y no a través de propiedades. (Servicio de Negocios vs Objeto Persistente).
juanjose.montesdeocaarbos
parents:
6
diff
changeset
|
93 Assert.AreEqual(1, agenda.GetEventosPublicados().Count); |
2 | 94 } |
95 | |
96 [Test] | |
8
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
97 public void Propuesta_de_van_con_usuario_autenticado() |
4 | 98 { |
99 var van = new Van{Titulo = "Van propuesta"}; | |
100 | |
8
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
101 var seguridad = new Mock<ISeguridad>(); |
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
102 var agenda = new Agenda(null, null, seguridad.Object); |
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
103 |
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
104 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); |
4 | 105 agenda.Proponer(van); |
106 | |
107 IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); | |
108 Assert.IsNotNull(eventosPropuestos); | |
109 Assert.AreEqual(1, eventosPropuestos.Count); | |
110 Assert.AreEqual("Van propuesta", eventosPropuestos[0].Titulo); | |
111 } | |
112 | |
6
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
113 [Test] |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
114 public void Verificar_propuesta_separada_de_publicacion() |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
115 { |
8
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
116 var seguridad = new Mock<ISeguridad>(); |
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
117 var agenda = new Agenda(null, null, seguridad.Object); |
6
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
118 |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
119 var vanPropuesta = new Van { Titulo = "Van propuesta" }; |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
120 var vanPublicada = EventoObjectMother.GetVanValidaParaPublicar(); |
8
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
121 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); |
6
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
122 |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
123 agenda.Proponer(vanPropuesta); |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
124 agenda.Publicar(vanPublicada); |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
125 |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
126 IList<Evento> eventosPropuestos = agenda.GetEventosPropuestos(); |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
127 IList<Evento> eventosPublicados = agenda.GetEventosPublicados(); |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
128 |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
129 Assert.AreEqual(1, eventosPropuestos.Count); |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
130 Assert.AreEqual(1, eventosPublicados.Count); |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
131 } |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
132 |
4 | 133 [Test] |
134 public void Propuesta_de_van_sin_titulo() | |
135 { | |
136 var van = new Van(); | |
137 | |
8
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
138 var seguridad = new Mock<ISeguridad>(); |
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
139 var agenda = new Agenda(null, null, seguridad.Object); |
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
140 |
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
141 Assert.Throws<ValidationException>(() => agenda.Proponer(van)); |
4 | 142 Assert.AreEqual(Guid.Empty, van.Id); |
143 } | |
144 | |
145 [Test] | |
146 public void Agendar_van_propuesta_sin_fecha() | |
147 { | |
8
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
148 var seguridad = new Mock<ISeguridad>(); |
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
149 var agenda = new Agenda(null, null, seguridad.Object); |
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
150 |
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
151 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); |
4 | 152 |
153 { | |
154 var van = new Van {Titulo = "Van propuesta"}; | |
8
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
155 agenda.Proponer(van); |
4 | 156 } |
157 | |
158 { | |
159 var van = agenda.GetEventosPropuestos().FirstOrDefault(); | |
160 Assert.IsNotNull(van); | |
161 Assert.Throws<ValidationException>(()=>agenda.Publicar(van)); | |
162 } | |
163 } | |
164 | |
165 [Test] | |
166 public void Agendar_van_propuesta_sin_ponente() | |
167 { | |
8
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
168 var seguridad = new Mock<ISeguridad>(); |
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
169 var agenda = new Agenda(null, null, seguridad.Object); |
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
170 |
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
171 seguridad.Setup(s => s.GetPrincipal()).Returns(SeguridadObjectMother.GetGenericPrincipalAutenticadoSinRoles()); |
4 | 172 |
173 { | |
174 var van = new Van { Titulo = "Van propuesta" }; | |
8
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
175 agenda.Proponer(van); |
4 | 176 } |
177 | |
178 { | |
179 var van = agenda.GetEventosPropuestos().FirstOrDefault() as Van; | |
180 Assert.IsNotNull(van); | |
181 | |
182 van.Fecha = DateTime.Today.AddDays(5); | |
183 Assert.Throws<ValidationException>(() => agenda.Publicar(van)); | |
184 } | |
185 } | |
186 | |
187 [Test] | |
2 | 188 public void Van_crud() |
189 { | |
190 Guid vanId; | |
191 { | |
8
cae27d7eb697
Se agregó ISeguridad para validar autenticaciones de usuarios.
juanjose.montesdeocaarbos
parents:
7
diff
changeset
|
192 var agenda = new Agenda(null, null, null); |
4 | 193 agenda.Publicar(EventoObjectMother.GetVanValidaParaPublicar()); |
2 | 194 |
195 IAgendaRepository agendaRepository = new AgendaRepository(); | |
196 | |
197 agendaRepository.Save(agenda); | |
198 vanId = agenda.Id; | |
199 } | |
200 | |
201 { | |
202 IAgendaRepository agendaRepository = new AgendaRepository(); | |
203 | |
3 | 204 Agenda agenda = agendaRepository.Get(vanId); |
2 | 205 |
206 Assert.IsNotNull(agenda); | |
7
deee2ca97f5b
Se modificó Agenda para exponer los eventos a través de métodos y no a través de propiedades. (Servicio de Negocios vs Objeto Persistente).
juanjose.montesdeocaarbos
parents:
6
diff
changeset
|
207 Assert.AreEqual(1, agenda.GetEventosPublicados().Count); |
4 | 208 agenda.Publicar(EventoObjectMother.GetCafeValidoParaPublicar()); |
2 | 209 |
210 agendaRepository.Update(agenda); | |
211 } | |
212 | |
213 { | |
214 IAgendaRepository agendaRepository = new AgendaRepository(); | |
215 | |
3 | 216 Agenda agenda = agendaRepository.Get(vanId); |
2 | 217 |
218 Assert.IsNotNull(agenda); | |
7
deee2ca97f5b
Se modificó Agenda para exponer los eventos a través de métodos y no a través de propiedades. (Servicio de Negocios vs Objeto Persistente).
juanjose.montesdeocaarbos
parents:
6
diff
changeset
|
219 Assert.AreEqual(2, agenda.GetEventosPublicados().Count); |
2 | 220 |
221 agendaRepository.Delete(agenda); | |
222 } | |
223 | |
224 { | |
225 IAgendaRepository agendaRepository = new AgendaRepository(); | |
226 | |
3 | 227 Agenda agenda = agendaRepository.Get(vanId); |
2 | 228 |
229 Assert.IsNull(agenda); | |
230 } | |
1 | 231 } |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
232 } |
3 | 233 } |