2016-12-22 1 views
2

Je suis en train de créer une API simulacre avec wiremock autonome. Le corps de la réponse dépend d'un attribut dans le corps de la requête.Demande corps correspondant dans WireMock (pas JSON/XML)

Avec JSON, j'étais capable de faire. Voici la cartographie échantillon:

{ 
    "request":{ 
     "method":"POST", 
     "bodyPatterns":[ 
     { 
      "matchesJsonPath":"$.somekey.subkey[?(@.attribute == 'VALUE_123')]" 
     } 
     ] 
    }, 
    "response":{ 
     "status":200, 
     "bodyFileName":"res.dat", 
     "headers":{ 
     "Content-Type":"application/x-proto;charset=UTF-8" 
     } 
    } 
} 

Cependant, mon exigence principale est de traiter avec Google protobuf et je suis en train d'utiliser le format de texte au lieu de celui-ci que les moqueurs utiliseront pour se moquer de l'API pour la réponse. Ainsi, le fichier de requête est au format texte et n'a aucune validation JSON comme des guillemets, ou une virgule à la fin de chaque ligne, etc.

J'ai trouvé qu'en utilisant le chemin JSON, wiremock est incapable de faire correspondre le corps de la requête en raison de son format incorrect. Par exemple, une telle demande:

{ 
animal { 
type { 
key1: "value" 
key2: value2 
} 
} 
} 

au lieu de

{ 
    "animal":{ 
     "type":{ 
     "key1":"value", 
     "key2":"value2" 
     } 
    } 
} 

Disons que key1 = value1 doit correspondre et response1.json doit être retourné, ou lorsque key1 = someOtherValue, alors response2.json doit être retourné. Et oui, la clé fait partie du type, et le type fait partie de l'animal. Comment puis-je obtenir ce corps de requête correspondant?

Répondre

1

Vous pouvez juste faire:

{ 
    "request": { 
    "method": "POST", 
    "url": "/authorize/oauth2/token", 
    "bodyPatterns": [ { 
      "matches": ".username=(test)&." 
     } 
    ] 
    }, 
    "response": { 
    "status": 200, 
    . . . 

également https://github.com/tomakehurst/wiremock/issues/575

+0

Bon, je viens de comprendre que plus tard. Merci d'avoir répondu. – xploreraj

+1

Ceci est un de plus: '" bodyPatterns ": [{ " contient ":" type: CREDIT " }]' – xploreraj