Bonjour,
J'essaie de tester de façon unitaire l'élément <secured> dans un flow spring webflow ce qui ressemble à ceci:
<secured attributes="ROLE_ADMIN" />
quand j'essaie de tester avec ma souris et mon browser ça fonctionne bien.
Mais ce que je voudrai c'est le tester avec des tests unitaires.
j'ai ajouté les annotations suivantes sur la classe de test:
1 2 3
|
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:spring/test-context.xml"}) |
qui étend la classe AbstractXmlFlowExecutionTests.
Le chargement du fichier de flow est fait avec cette méthode:
1 2 3 4 5 6 7
|
@Override
protected FlowDefinitionResource getResource(
FlowDefinitionResourceFactory resourceFactory) {
String path = "src/main/webapp/WEB-INF/flows/staticDataAmendment/staticDataAmendment-flow.xml";
return resourceFactory.createFileResource(path);
} |
Quand j'essaie le code ci-dessous:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
@Test
public void shouldNotAccessToProtectedFlow(){
//given
AccessDeniedException accessDeniedException = null;
login("user1", "melbourne");//grant authority is "ROLE_USER"
//when
try{
//expected grant authority is ROLE_ADMIN
MutableAttributeMap input = new LocalAttributeMap();
MockExternalContext context = new MockExternalContext();
//setCurrentState("enterSearchCriteria");
startFlow(input, context);
assertCurrentStateEquals("enterSearchCriteria");
}catch(AccessDeniedException a){
accessDeniedException = a;
}
//then
assertNotNull("Access to protected flows is not protected, accessDeniedException should be null", accessDeniedException);
} |
le code compile mais aucune exception n'est levée.
le test échoue car je pense que l'élément <secured> n'est pas pris en compte dans le contexte du test
Quelle est la manière de tester cet élément de sécurité?
merci
ps: J'ai fait des tests unitaires sur l'accès aux méthodes d'instance protégées par des annotations @secured et ça fonctionne bien.
Les tests unitaires sur le déroulement des flows webflow fonctionnent bien aussi
Partager