Bonjour à tous,
Je ne sais pas si je suis exactement au bon endroit, mais je me lance :
J'ai un webservice java en cours de développement. Le modèle des entrées/sorties est crée, et le WSDL est finalisé.
J'ai utilisé SoapUI en version 5.2.0 pour créer des jeux de tests à partir du WSDL et pour générer un Mock Service SOAP.
Ça marche super (et je découvre à quel point c'est généralissime pour bouchonner), mais j'ai un petit truc qui me chagrine avec les mocks ; il ne semble y avoir aucune vérification sur le fait que les paramètres obligatoires soient présents dans la request en entrée.
Pour illustrer mon propos, ma request devrait ressembler à :
Toutes les variables sont obligatoires sauf donc le libelleNatureProjet et l'identifiant utilisateur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:emp="http://mycompany.com/services/my/Service"> <soapenv:Header/> <soapenv:Body> <emp:monOperationRequest> <contexte> <identifiantPartenaire>?</identifiantPartenaire> <!--Optional:--> <identifiantUtilisateur>?</identifiantUtilisateur> </contexte> <dossier> <numeroDossier>?</numeroDossier> <!--Optional:--> <libelleNatureProjet>?</libelleNatureProjet> <dossier> <codeProduit>1</codeProduit> </emp:monOperationRequest> </soapenv:Body> </soapenv:Envelope>
Sauf que si j'enlève tout le contexte, mon mock me renvoie quand même la réponse.
Pire!
Cette requête:
Fonctionne aussi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:emp="http://mycompany.com/services/my/Service"> <soapenv:Header/> <soapenv:Body> <emp:monOperationRequest> </emp:monOperationRequest> </soapenv:Body> </soapenv:Envelope>
Du coup, je me questionne. C'est moi qui ait mal configuré mon projet SoapUI, ou SoapUI qui ne contrôle rien de rien, ou mon WSDL qui est mauvais?
Dans mon WSDL, j'ai :
Est-ce qu'il ne faudrait pas des minOccurs=1 sur les champs qui sont obligatoires?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <xs:complexType name="monOperationRequest"> <xs:sequence> <xs:element name="contexte" type="ns1:contexteAppel"/> <xs:element name="dossier" type="tns:dossier"/> <xs:element name="codeProduit" type="xs:string"/> </xs:sequence> </xs:complexType>
Sachant que ces élements sont annotés @XmlElement(required = true) dans les classes java et que le WSDL est généré via wsdl2java de CXF...
Bref, je patauge... et un peu de lumière serait la bienvenue!
Partager