cypress-soap-wiremock-client
v1.1.0
Published
Mock Soap requests using wiremock mock server within cypress tests.
Downloads
1
Maintainers
Readme
Introduction
Using Cypress to test a soap application? If you're looking to mock SOAP actions, then this library can help you do this.
Usage
A simple cypress test.
describe('the notifications display correctly for hte logged in user', function() {
before(function() {
...
});
it('shows the number of notifications for the current user.', function() {
cy.visit('http://localhost/notifications');
cy.contains('Current Notifications: 23');
});
});
With soap mocking.
# Import the library.
import soapMockClient from 'cypress-soap-wiremock-client';
Cypress setup.
...
describe('the notifications display correctly for hte logged in user', function() {
before(function() {
soapMockClient.config({"baseUrl": "http://localhost:8888"});
soapMockClient.reset();
})
it('shows the number of notifications for the current user.', function() {
# Encapsulate your existing cypress calls in the soapMockClient call.
soapMockClient.mockAndCall([
{
"url": "/soa-mocks/mocknotificationserviceBinding",
"action": "GetNotificationCount",
"response": "soap/notification-count-response.txt"
}
], () => {
cy.visit('http://localhost/notifications');
cy.contains('Current Notifications: 23');
});
});
});
The above will execute the mock requests before running the tests ensuring mocks are ready. You can specify multiple mock objects in the array.
Modifying xml payload
# Import the library.
import soapMockClient from 'cypress-soap-wiremock-client';
Cypress setup.
...
describe('the notifications display correctly for hte logged in user', function() {
before(function() {
soapMockClient.config({"baseUrl": "http://localhost:8888"});
soapMockClient.reset();
})
it('shows the number of notifications for the current user.', function() {
# Encapsulate your existing cypress calls in the soapMockClient call.
soapMockClient.mockAndCall([
{
"url": "/soa-mocks/mocknotificationserviceBinding",
"action": "GetNotificationCount",
"response": "soap/notification-count-response.txt",
"callback": (xmlDoc, next) => {
// Modify the xmlDoc here before passing it on. xmlDoc is a DOMParser object.
xmlDoc.getElementsByTagName("NotificationCount")[0].childNodes[0].nodeValue = 500;
next(xmlDoc);
}
}
], () => {
cy.visit('http://localhost/notifications');
cy.contains('Current Notifications: 23');
});
});
});
All mock options:
{
"url": "the endpoint that will serve the mock response from wiremock - required",
"action": "The soap action - required",
"response": "the location of the response xml file - required",
"method": "The soap method expected to be used to call the endpoint - defaults to POST",
"status": "the status code to return - defaults to 200",
"callback": "A callback to manipulate the file xml contents before sending them off - defaults to just sending the file contents"
}