Slackbot
11/29/2023, 7:56 PMTom
11/29/2023, 9:07 PMAntonio Pérez Dieppa
11/30/2023, 9:54 AM2.3.0
creo) el "dynamic templating" está habilitado por defecto. Así que, si no estás usando la última versión, intenta probar con habilitarlo explícitamente.
Si todavía pesiste el problema, dime qué output obtienes.
1. En el response ves los handlebars sin ser reemplazados
2. Directamente son remplazados por vacío
3. Una excepción
GraciasDiego Ríos
11/30/2023, 12:44 PMAntonio Pérez Dieppa
11/30/2023, 1:11 PMresponse.json
es correcto en este aspecto). Entonces cuando haces una llamada a ese endpoint y se produce un match, es decir el stub que especificas se corresponde con la llamada que has hecho, el response debería ser el. json ese, remplezando los handlebars con los parámetros de la request.
Obviamente, la request tiene que tener esos parámetros. En tu caso necesitas tener un queryParam llamando risk
, un campo en el request body llamado account_number
, etc.Antonio Pérez Dieppa
11/30/2023, 1:12 PMDiego Ríos
11/30/2023, 1:36 PMAntonio Pérez Dieppa
11/30/2023, 3:18 PMDiego Ríos
11/30/2023, 3:38 PMAntonio Pérez Dieppa
11/30/2023, 4:04 PMAntonio Pérez Dieppa
11/30/2023, 4:05 PMoptions().globalTemplating(true)
?Diego Ríos
11/30/2023, 4:16 PMAntonio Pérez Dieppa
11/30/2023, 4:21 PMWireMockServer wm =
new WireMockServer(options().globalTemplating(true));
Diego Ríos
11/30/2023, 4:27 PMAntonio Pérez Dieppa
11/30/2023, 4:28 PMDiego Ríos
11/30/2023, 8:11 PMDiego Ríos
11/30/2023, 9:05 PMAntonio Pérez Dieppa
12/01/2023, 9:06 AMAntonio Pérez Dieppa
12/01/2023, 9:06 AMAntonio Pérez Dieppa
12/01/2023, 12:01 PMDiego Ríos
12/01/2023, 1:15 PMpublic static void main(String[] args) {
WireMockServer wireMockServer = new WireMockServer();
wireMockServer.start();
WireMock.configureFor("localhost", 8080);
WireMock.stubFor(<http://WireMock.post|WireMock.post>(WireMock.urlEqualTo("/api/decidir/v1tokensfile"))
.willReturn(WireMock.aResponse()
.withBodyFile("response.json")
.withHeader("Content-Type", "application.json")
.withStatus(201)));
try {
Thread.sleep(Long.MAX_VALUE);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
despues aqui te digo la estructura donde esta el fichero :
proyecto-
--src
--test
--__files
--response.json
y el archivo esta armado asi dentro de ese file :
{
"token_id": "{{randomValue length=36 type='ALPHANUMERIC'}}",
"issuer_decision": "{{request.query.risk}}",
"card_last_digits": "{{jsonPath request.body '$.account_number' | regex '\\d{4}$'}}",
"expiration_date": "{{jsonPath request.body '$.expiration_date'}}",
"token_last_digits": "{{random '5470' '6531' '1467'}}",
"token_expiration_date": "{{random '1128' '0725' '1727'}}",
"token_state": "ACTIVE",
"payment_account_ref": "string",
"info_card_product": {
"bank_name": "Please Contact Your Bank",
"card_type": "UNKNOWN",
"primary_scheme": "VISA",
"card_category_description": "Your Bank",
"card_arts": {
"foreground_color": "7aff54",
"card_background_image_id": null,
"bank_logo_id": null,
"brand_logo_id": null,
"cobrand_logo_id": null,
"complete_card_image_id": "15ac4371-dcb9-4310-867e-b12338970276",
"card_icon_id": "14e3044fa-949e-4900-800f-88b8fc6cc3d5"
},
"terms_condition_url": "string",
"privacy_policy_url": "string"
},
"creation_timestamp": "{{random 'yyyyMMdd' 20220101 20231231}}",
"thales_token_available": true
}
Diego Ríos
12/01/2023, 1:16 PM<dependency>
<groupId>com.github.tomakehurst</groupId>
<artifactId>wiremock</artifactId>
<version>2.27.2</version>
<scope>test</scope>
</dependency>
Antonio Pérez Dieppa
12/01/2023, 1:19 PMDiego Ríos
12/01/2023, 2:01 PMAntonio Pérez Dieppa
12/01/2023, 2:20 PMDiego Ríos
12/01/2023, 2:57 PMDiego Ríos
12/04/2023, 1:15 PMAntonio Pérez Dieppa
12/05/2023, 3:36 PMAntonio Pérez Dieppa
12/05/2023, 8:15 PMimplementation("org.wiremock:wiremock:3.3.1")
• Añadir el fichero response.json
en src/test/__files
• Crear la clase main con el siguiente código
package org.example;
import com.github.tomakehurst.wiremock.WireMockServer;
import com.github.tomakehurst.wiremock.client.WireMock;
public class Main {
public static void main(String[] args) {
WireMockServer wireMockServer = new WireMockServer();
wireMockServer.start();
WireMock.configureFor("localhost", 8080);
System.out.println("Server listening at 8080");
WireMock.stubFor(WireMock.get(WireMock.urlEqualTo("/api/decidir/v1tokensfile"))
.willReturn(WireMock.aResponse()
.withBodyFile("response.json")
.withTransformers("response-template")
.withStatus(201)));
try {
System.out.println("Sleeping for " + Long.MAX_VALUE);
Thread.sleep(Long.MAX_VALUE);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
• Nota que añadí .withTransformers("response-template")
Antonio Pérez Dieppa
12/05/2023, 8:18 PMAntonio Pérez Dieppa
12/05/2023, 8:22 PMpost
por get
.
Puede que alguno de los handlebars que usas estén incorrectos. No comprobé esoAntonio Pérez Dieppa
12/11/2023, 12:13 PMDiego Ríos
12/11/2023, 1:16 PM