You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.9 KiB
55 lines
1.9 KiB
4 years ago
|
const { Autohook } = require('../');
|
||
|
const nock = require('nock');
|
||
|
const assert = require('assert');
|
||
|
const oauth = {
|
||
|
consumer_key: 'test',
|
||
|
consumer_secret: 'test',
|
||
|
token: 'test',
|
||
|
token_secret: 'test',
|
||
|
};
|
||
|
|
||
|
// Success
|
||
|
(async () => {
|
||
|
const environment = 'test';
|
||
|
const userId = '100001337';
|
||
|
const webhookId = '133700001337';
|
||
|
const webhookUrl = 'https://example.com/webhook/1';
|
||
|
|
||
|
const scope = nock('https://api.twitter.com')
|
||
|
.post('/oauth2/token', 'grant_type=client_credentials')
|
||
|
.reply(200, {token_type: 'bearer', access_token: 'test'})
|
||
|
.get('/1.1/account/verify_credentials.json')
|
||
|
.reply(200, {screen_name: 'TestUser'})
|
||
|
.get(`/1.1/account_activity/all/${environment}/webhooks.json`)
|
||
|
.reply(200, [
|
||
|
{id: webhookId, url: webhookUrl},
|
||
|
])
|
||
|
.delete(`/1.1/account_activity/all/${environment}/webhooks/${webhookId}.json`)
|
||
|
.reply(204)
|
||
|
.post(`/1.1/account_activity/all/${environment}/webhooks.json?url=${encodeURIComponent(webhookUrl)}`)
|
||
|
.reply(204)
|
||
|
.post(`/1.1/account_activity/all/${environment}/subscriptions.json`)
|
||
|
.reply(204)
|
||
|
.get('/1.1/account_activity/all/subscriptions/count.json')
|
||
|
.reply(200, {subscriptions_count: 0, provisioned_count: 15})
|
||
|
.delete(`/1.1/account_activity/all/${environment}/subscriptions/${userId}.json`)
|
||
|
.reply(204)
|
||
|
|
||
|
const webhook = new Autohook({...oauth, env: environment});
|
||
|
await assert.doesNotReject(webhook.removeWebhooks());
|
||
|
await assert.doesNotReject(webhook.start(webhookUrl));
|
||
|
let subscriptionStatus = null;
|
||
|
|
||
|
await assert.doesNotReject(async () => {
|
||
|
subscriptionStatus = await webhook.subscribe({oauth_token: oauth.token, oauth_token_secret: oauth.token_secret});
|
||
|
});
|
||
|
|
||
|
assert.strictEqual(subscriptionStatus, true);
|
||
|
|
||
|
let unsubscriptionStatus = null;
|
||
|
await assert.doesNotReject(async () => {
|
||
|
unsubscriptionStatus = await webhook.unsubscribe(userId);
|
||
|
});
|
||
|
assert.strictEqual(unsubscriptionStatus, true);
|
||
|
scope.done();
|
||
|
})();
|