Francislainy Campos
04/11/2022, 12:41 PMMatt (pactflow.io / pact-js / pact-go)
Francislainy Campos
04/12/2022, 12:13 PMFrancislainy Campos
04/13/2022, 9:35 AMMatt (pactflow.io / pact-js / pact-go)
Francislainy Campos
04/13/2022, 9:41 AMFrancislainy Campos
04/13/2022, 9:41 AMMatt (pactflow.io / pact-js / pact-go)
Francislainy Campos
04/13/2022, 9:43 AMMatt (pactflow.io / pact-js / pact-go)
Matt (pactflow.io / pact-js / pact-go)
npm list @pact-foundation/pact
Francislainy Campos
04/13/2022, 9:46 AM"devDependencies": {
"@pact-foundation/pact": "^9.17.2",
"@pact-foundation/pact-node": "^10.17.1",
"chai": "^4.3.6",
"jest-pact": "^0.9.0-beta.v3"
}
Francislainy Campos
04/13/2022, 9:46 AMFrancislainy Campos
04/13/2022, 9:46 AMFrancislainy Campos
04/13/2022, 9:47 AMFrancislainy Campos
04/13/2022, 9:47 AMMatt (pactflow.io / pact-js / pact-go)
Francislainy Campos
04/13/2022, 9:49 AMFrancislainy Campos
04/13/2022, 9:57 AMFrancislainy Campos
04/13/2022, 9:57 AMMatt (pactflow.io / pact-js / pact-go)
getlocation
twice?Matt (pactflow.io / pact-js / pact-go)
Matt (pactflow.io / pact-js / pact-go)
Francislainy Campos
04/13/2022, 10:26 AMFrancislainy Campos
04/13/2022, 10:27 AMFrancislainy Campos
04/13/2022, 10:28 AMreturn provider.executeTest(async (mockserver) => {
return getLocation(mockserver.url, '100')
.then((result) => {
expect(result.title).to.equal('Test');
});
});
Francislainy Campos
04/13/2022, 10:28 AMMatt (pactflow.io / pact-js / pact-go)
getLocation
look like?Francislainy Campos
04/13/2022, 10:28 AMexports.getLocation = (basiUrl = BASE_URL, id) => {
return axios.request({
method: "GET",
baseURL: BASE_URL,
url: `${BASE_URL}/api/mb/location/${id}`,
headers: {Accept: "application/json"},
})
}
Matt (pactflow.io / pact-js / pact-go)
Francislainy Campos
04/13/2022, 10:29 AMMatt (pactflow.io / pact-js / pact-go)
Francislainy Campos
04/13/2022, 10:30 AMMatt (pactflow.io / pact-js / pact-go)
Francislainy Campos
04/13/2022, 10:30 AMMatt (pactflow.io / pact-js / pact-go)
fromProviderState
from the query to the pathMatt (pactflow.io / pact-js / pact-go)
fromProviderState
is the matcher, the example uses a query string but you can use that matcher in other places - you want it on the path
Matt (pactflow.io / pact-js / pact-go)
Francislainy Campos
04/13/2022, 10:32 AM.withRequest({
method: 'GET',
path: `/api/mb/location/fromProviderState(${id}, '100')`,
headers: {Accept: 'application/hal+json'},
})
Francislainy Campos
04/13/2022, 10:32 AMMatt (pactflow.io / pact-js / pact-go)
Francislainy Campos
04/13/2022, 10:38 AMFrancislainy Campos
04/13/2022, 10:39 AMFrancislainy Campos
04/13/2022, 11:02 AM// path: {'/api/mb/location/id': fromProviderState('${id}', '100')},
path: fromProviderState(`/api/mb/location/${id}`, '100'),
Francislainy Campos
04/13/2022, 11:24 AMpath: fromProviderState('/api/mb/location/${id}', '/api/mb/location/100'),
Francislainy Campos
04/13/2022, 11:24 AMMatt (pactflow.io / pact-js / pact-go)
Matt (pactflow.io / pact-js / pact-go)
Francislainy Campos
04/13/2022, 12:24 PMMatt (pactflow.io / pact-js / pact-go)
Francislainy Campos
04/13/2022, 12:25 PMMatt (pactflow.io / pact-js / pact-go)
Accept
header, but your axios client just sends application/json
Francislainy Campos
04/13/2022, 12:26 PMFrancislainy Campos
04/13/2022, 12:26 PMFrancislainy Campos
04/13/2022, 12:30 PMFrancislainy Campos
04/13/2022, 12:30 PMFrancislainy Campos
04/13/2022, 12:30 PMMatt (pactflow.io / pact-js / pact-go)
Francislainy Campos
04/13/2022, 12:39 PMFrancislainy Campos
04/13/2022, 12:40 PMFrancislainy Campos
04/13/2022, 12:42 PMFrancislainy Campos
04/13/2022, 12:43 PMFrancislainy Campos
04/13/2022, 12:43 PMMatt (pactflow.io / pact-js / pact-go)
Francislainy Campos
04/13/2022, 1:01 PMFrancislainy Campos
04/13/2022, 1:02 PMFrancislainy Campos
04/13/2022, 1:02 PMMatt (pactflow.io / pact-js / pact-go)
Francislainy Campos
04/13/2022, 1:05 PMMatt (pactflow.io / pact-js / pact-go)
BASE_URL
(note basiUrl
is not actually used)(
exports.getLocation = (basiUrl = BASE_URL, id) => {
return axios.request({
method: "GET",
baseURL: BASE_URL,
url: `${BASE_URL}/api/mb/location/${id}`,
headers: {Accept: "application/json"},
})
}
Matt (pactflow.io / pact-js / pact-go)
const BASE_URL = '<http://localhost:8081>';
Matt (pactflow.io / pact-js / pact-go)
...
[2022-04-13T13:07:04Z DEBUG pact_mock_server::mock_server] Started mock server on 127.0.0.1:51431
console.error
Error: Error: connect ECONNREFUSED 127.0.0.1:8081
at Object.dispatchError (/private/tmp/mbfrontend/node_modules/jsdom/lib/jsdom/living/xhr/xhr-utils.js:63:19)
at Request.<anonymous> (/private/tmp/mbfrontend/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequest-impl.js:655:18)
at Request.emit (events.js:327:22)
at ClientRequest.<anonymous> (/private/tmp/mbfrontend/node_modules/jsdom/lib/jsdom/living/helpers/http-request.js:121:14)
at ClientRequest.emit (events.js:315:20)
at Socket.socketErrorListener (_http_client.js:469:9)
at Socket.emit (events.js:315:20)
at emitErrorNT (internal/streams/destroy.js:106:8)
at emitErrorCloseNT (internal/streams/destroy.js:74:3)
at processTicksAndRejections (internal/process/task_queues.js:80:21) undefined
at VirtualConsole.<anonymous> (node_modules/jsdom/lib/jsdom/virtual-console.js:29:45)
at Object.dispatchError (node_modules/jsdom/lib/jsdom/living/xhr/xhr-utils.js:66:53)
at Request.<anonymous> (node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequest-impl.js:655:18)
at ClientRequest.<anonymous> (node_modules/jsdom/lib/jsdom/living/helpers/http-request.js:121:14)
[2022-04-13 13:07:04.403 +0000] ERROR (44671 on macfellows): pact@10.0.0-beta.59: Network Error
Francislainy Campos
04/13/2022, 1:08 PMMatt (pactflow.io / pact-js / pact-go)
Matt (pactflow.io / pact-js / pact-go)
Matt (pactflow.io / pact-js / pact-go)
exports.getLocation = (baseUrl = BASE_URL, id) => {
return axios.request({
method: "GET",
baseURL: baseUrl,
url: `${baseUrl}/api/mb/location/${id}`,
headers: { Accept: "application/json" },
});
};
Francislainy Campos
04/13/2022, 1:11 PMFrancislainy Campos
04/13/2022, 1:11 PMFrancislainy Campos
04/13/2022, 1:11 PMFrancislainy Campos
04/13/2022, 1:12 PMMatt (pactflow.io / pact-js / pact-go)
Francislainy Campos
04/14/2022, 5:05 AMFrancislainy Campos
04/14/2022, 6:26 AMFrancislainy Campos
04/14/2022, 6:26 AMFrancislainy Campos
04/14/2022, 6:27 AMFrancislainy Campos
04/14/2022, 6:28 AMconst requestBodyParameters = {
client: 'googleclassroom',
path: '/passthrough',
requestUrl: fromProviderState(
'/v1/courses/${courseId}/courseWork/{courseWorkId}',
'/v1/courses/476794168462/courseWork/481002261081',
),
requestHttpVerb: 'DELETE',
body: null,
headers: {},
pathVariables: {},
query: null,
};
Matt (pactflow.io / pact-js / pact-go)
Francislainy Campos
04/14/2022, 7:39 AMMatt (pactflow.io / pact-js / pact-go)