mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-01-20 22:42:53 -05:00
9c3ed1a1f5
refs https://github.com/TryGhost/Toolbox/issues/341 refs https://github.com/TryGhost/Toolbox/issues/320 - The snapshot for post's url property is causing test flakyness. The reason is due to the async nature of url processing in the URL Service (https://github.com/TryGhost/Ghost/issues/10360). Once the underlying issue is solved this hack could be removed. - Having a snapshot tes even in this form is better than having none!
89 lines
2.7 KiB
JavaScript
89 lines
2.7 KiB
JavaScript
const {agentProvider, mockManager, fixtureManager, matchers} = require('../utils/e2e-framework');
|
|
const {anyObjectId, anyISODateTime, anyUuid, stringMatching} = matchers;
|
|
|
|
const tierSnapshot = {
|
|
id: anyObjectId,
|
|
created_at: anyISODateTime,
|
|
updated_at: anyISODateTime
|
|
};
|
|
|
|
const buildPostSnapshotWithTiers = ({tiersCount}) => {
|
|
return {
|
|
id: anyObjectId,
|
|
uuid: anyUuid,
|
|
comment_id: anyObjectId,
|
|
published_at: anyISODateTime,
|
|
created_at: anyISODateTime,
|
|
updated_at: anyISODateTime,
|
|
// @TODO: hack here! it's due to https://github.com/TryGhost/Toolbox/issues/341
|
|
// this matcher should be removed once the issue is solved
|
|
url: stringMatching(/http:\/\/127.0.0.1:2369\/\w+\//),
|
|
tiers: new Array(tiersCount).fill(tierSnapshot)
|
|
};
|
|
};
|
|
|
|
const buildPreviousPostSnapshotWithTiers = ({tiersCount}) => {
|
|
return {
|
|
updated_at: anyISODateTime,
|
|
tiers: new Array(tiersCount).fill(tierSnapshot)
|
|
};
|
|
};
|
|
|
|
describe('post.* events', function () {
|
|
let adminAPIAgent;
|
|
let webhookMockReceiver;
|
|
|
|
before(async function () {
|
|
adminAPIAgent = await agentProvider.getAdminAPIAgent();
|
|
await fixtureManager.init('integrations');
|
|
await adminAPIAgent.loginAsOwner();
|
|
});
|
|
|
|
beforeEach(function () {
|
|
webhookMockReceiver = mockManager.mockWebhookRequests();
|
|
});
|
|
|
|
afterEach(function () {
|
|
mockManager.restore();
|
|
});
|
|
|
|
it('post.published even is triggered', async function () {
|
|
const webhookURL = 'https://test-webhook-receiver.com/post-published/';
|
|
await webhookMockReceiver.mock(webhookURL);
|
|
await fixtureManager.insertWebhook({
|
|
event: 'post.published',
|
|
url: webhookURL
|
|
});
|
|
|
|
const res = await adminAPIAgent
|
|
.post('posts/')
|
|
.body({
|
|
posts: [{
|
|
title: 'webhookz',
|
|
status: 'draft'
|
|
}]
|
|
})
|
|
.expectStatus(201);
|
|
|
|
const id = res.body.posts[0].id;
|
|
const updatedPost = res.body.posts[0];
|
|
updatedPost.status = 'published';
|
|
|
|
await adminAPIAgent
|
|
.put('posts/' + id)
|
|
.body({
|
|
posts: [updatedPost]
|
|
})
|
|
.expectStatus(200);
|
|
|
|
await webhookMockReceiver
|
|
// TODO: implement header matching feature next!
|
|
// .matchHeaderSnapshot();
|
|
.matchBodySnapshot({
|
|
post: {
|
|
current: buildPostSnapshotWithTiers({tiersCount: 2}),
|
|
previous: buildPreviousPostSnapshotWithTiers({tiersCount: 2})
|
|
}
|
|
});
|
|
});
|
|
});
|