JSON Schema Validation with REST-assured

1. Oversikt

Det REST-sikre biblioteket gir støtte for testing av REST APIer, vanligvis i JSON-format.

Fra tid til annen kan det være ønskelig, uten å analysere svaret i detalj, å vite først om JSON-kroppen samsvarer med et bestemt JSON-format.

I denne raske opplæringen tar vi en titt på hvordan vi kan validere et JSON-svar basert på et forhåndsdefinert JSON-skjema.

2. Oppsett

Det første REST-sikre oppsettet er det samme som vår forrige artikkel.

I tillegg må vi også inkludere json-schema-validator modul i pom.xml fil:

 io.rest-forsikret json-schema-validator 3.3.0 test 

Følg denne lenken for å sikre at du har den nyeste versjonen.

3. Validering av JSON-skjema

La oss se på et eksempel.

Som et JSON-skjema bruker vi en JSON som er lagret i en fil som heter hendelse_0.json, som er til stede i klassestien:

{"id": "390", "data": {"leagueId": 35, "homeTeam": "Norway", "visitingTeam": "England",}, "odds": [{"price": "1.30 "," name ":" 1 "}, {" price ":" 5.25 "," name ":" X "}]}

Forutsatt at dette er det generelle formatet etterfulgt av alle data som returneres av REST API, kan vi deretter sjekke et JSON-svar for samsvar slik:

@Test offentlig ugyldig gittUrl_whenJsonResponseConformsToSchema_thenCorrect () {get ("/ events? Id = 390"). Deretter (). AssertThat () .body (matchesJsonSchemaInClasspath ("event_0.json")); }

Legg merke til at vi fortsatt importerer statisk treffJsonSchemaInClasspath fra io.restassured.module.jsv.JsonSchemaValidator.

4. Validering av JSON-skjema Innstillinger

4.1. Valider et svar

De json-schema-validator modul av REST-sikret gir oss makten til å utføre finkornet validering ved å definere våre egne tilpassede konfigurasjonsregler.

Si at vi vil at validering alltid skal bruke JSON-skjemaversjon 4:

@Test offentlig ugyldighet gittUrl_whenValidatesResponseWithInstanceSettings_thenCorrect () {JsonSchemaFactory jsonSchemaFactory = JsonSchemaFactory.newBuilder () .setValidationConfiguration (ValidationConfiguration.newBuilder () .setDefaultVioners.). get ("/ events? id = 390"). deretter (). assertThat () .body (matchesJsonSchemaInClasspath ("event_0.json") .using (jsonSchemaFactory)); }

Vi ville gjort dette ved å bruke JsonSchemaFactory og spesifiser versjon 4 Skjemaversjon og hevder at den bruker dette skjemaet når en forespørsel blir gjort.

4.2. Sjekk valideringer

Som standard er json-schema-validator kjører kontrollerte valideringer på JSON-svarstrengen. Dette betyr at hvis skjemaet definerer odds som en matrise som i følgende JSON:

{"odds": [{"price": "1.30", "name": "1"}, {"price": "5.25", "name": "X"}]}

da vil validatoren alltid forvente en matrise som verdien for odds, derav et svar der odds er en String mislykkes validering. Så hvis vi vil være mindre strenge med svarene våre, kan vi legge til en tilpasset regel under validering ved først å gjøre følgende statisk import:

io.restassured.module.jsv.JsonSchemaValidatorSettings.settings;

utfør deretter testen med valideringskontroll satt til falsk:

@Test offentlig ugyldighet gittUrl_whenValidatesResponseWithStaticSettings_thenCorrect () {get ("/ events? Id = 390"). Deretter (). AssertThat (). Body (matchesJsonSchemaInClasspath ("event_0.json"). Ved hjelp av (innstillinger (). Med (). Kontrollert validering) (falsk))); }

4.3. Global valideringskonfigurasjon

Disse tilpasningene er veldig fleksible, men med et stort antall tester må vi definere en validering for hver test, dette er tungvint og ikke veldig vedlikeholdbart.

For å unngå dette, vi har friheten til å definere vår konfigurasjon bare en gang og la den gjelde for alle tester.

Vi konfigurerer valideringen slik at den ikke er merket av og alltid bruker den mot JSON-skjemaversjon 3:

JsonSchemaFactory fabrikk = JsonSchemaFactory.newBuilder () .setValidationConfiguration (ValidationConfiguration.newBuilder () .setDefaultVersion (SchemaVersion.DRAFTV3) .freeze ()). Fryse (); JsonSchemaValidator.settings = innstillinger () .with (). JsonSchemaFactory (fabrikk) .og (). Med (). CheckedValidation (false);

for å fjerne denne konfigurasjonen, ring tilbakestillingsmetoden:

JsonSchemaValidator.reset ();

5. Konklusjon

I denne artikkelen har vi vist hvordan vi kan validere et JSON-svar mot et skjema når vi bruker REST-forsikret.

Som alltid er hele kildekoden for eksemplet tilgjengelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found