Testplan

Postman scripts

De specificatie noemt expliciet: service metadata met supportedOperations en supportedExpands, aparte offering-typen in plaats van één generiek offering-endpoint, specifieke association-endpoints en deprecated paden zoals associations, components en news. Queryparameters pageSize, pageNumber, fields, search, filterQuery, since en until zijn onderdeel van het model.

Standaard testscripts

Basisscript voor status en JSON

pm.test("Status code is success", function () {
    pm.expect(pm.response.code).to.be.oneOf([200, 201]);
});

pm.test("Response is JSON", function () {
    pm.expect(pm.response.headers.get("Content-Type")).to.include("application/json");
});

pm.test("Response body is not empty", function () {
    pm.expect(pm.response.text()).to.not.be.empty;
});

Id-validatie voor detail-endpoints

const jsonData = pm.response.json();

pm.test("Returned object has id", function () {
    pm.expect(jsonData).to.have.property("id");
});

pm.test("Returned id matches requested id", function () {
    const requestedId = pm.variables.get("courseId") || pm.variables.get("programmeId");
    if (requestedId) {
        pm.expect(jsonData.id).to.eql(requestedId);
    }
});

Collection-validatie

const jsonData = pm.response.json();

pm.test("Collection response is an object or array", function () {
    pm.expect(jsonData).to.exist;
});

pm.test("Collection contains items", function () {
    const items = jsonData.items || jsonData.results || jsonData._embedded || jsonData;
    pm.expect(items).to.exist;
});

Paging-validatie

const jsonData = pm.response.json();
const items = jsonData.items || jsonData.results || [];

pm.test("Page contains expected number of items", function () {
    pm.expect(items.length).to.eql(1);
});

Sparse fields-validatie

const jsonData = pm.response.json();
const item = (jsonData.items && jsonData.items[0]) ? jsonData.items[0] : jsonData;

pm.test("Only expected fields are present", function () {
    const allowed = ["id", "name"];
    Object.keys(item).forEach(key => {
        pm.expect(allowed).to.include(key);
    });
});

404 / 400 foutvalidatie

pm.test("Status is client error", function () {
    pm.expect(pm.response.code).to.be.oneOf([400, 404]);
});

pm.test("Error body is present", function () {
    pm.expect(pm.response.text()).to.not.be.empty;
});

Pre-request script voor Bearer token

pm.request.headers.upsert({
    key: "Authorization",
    value: "Bearer " + pm.environment.get("authToken")
});

Handige Postman checks voor regressie

Opslaan van id uit list-response

Bijvoorbeeld na GET /courses:

const jsonData = pm.response.json();
const items = jsonData.items || jsonData.results || jsonData;

if (items && items.length > 0) {
    pm.environment.set("courseId", items[0].id);
}

Opslaan van associationId na POST

const jsonData = pm.response.json();
if (jsonData.id) {
    pm.environment.set("associationId", jsonData.id);
}