HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/europequiz/node_modules/oauth-1.0a/test/services/twitter.js
var expect  = require('chai').expect;
var Request = require('request');
var OAuth   = require('../../oauth-1.0a');
var crypto = require('crypto');

describe("Twitter Personal Consumer", function() {
    var oauth, token;

    beforeEach(function () {
        if (
            !process.env.TWITTER_CONSUMER_PUBLIC ||
            !process.env.TWITTER_CONSUMER_SECRET ||
            !process.env.TWITTER_TOKEN_PUBLIC ||
            !process.env.TWITTER_TOKEN_SECRET
        ) {
            this.skip('Twitter secret or token not set.');
            return;
        }

        this.timeout(10000);

        oauth = new OAuth({
            consumer: {
                key: process.env.TWITTER_CONSUMER_PUBLIC,
                secret: process.env.TWITTER_CONSUMER_SECRET
            },
            signature_method: 'HMAC-SHA1',
            hash_function: function(base_string, key) {
                return crypto.createHmac('sha1', key).update(base_string).digest('base64');
            }
        });

        token = {
            key: process.env.TWITTER_TOKEN_PUBLIC,
            secret: process.env.TWITTER_TOKEN_SECRET
        };
    });

    describe("#Get user timeline", function() {
        var request = {
            url: 'https://api.twitter.com/1.1/statuses/user_timeline.json',
            method: 'GET'
        };

        it("should be an array of tweets", function(done) {
            Request({
                url: request.url,
                method: request.method,
                qs: oauth.authorize(request, token),
                json: true
            }, function(err, res, body) {
                expect(err).to.be.a('null');
                expect(body).to.be.an.instanceof(Array);
                done();
            });
        });
    });

    describe("#Get user timeline limit 5", function() {
        var request = {
            url: 'https://api.twitter.com/1.1/statuses/user_timeline.json',
            method: 'GET',
            data: {
                count: 5
            }
        };

        it("should be an array of tweets (length 5)", function(done) {
            Request({
                url: request.url,
                method: request.method,
                qs: oauth.authorize(request, token),
                json: true
            }, function(err, res, body) {
                expect(err).to.be.a('null');
                expect(body).to.be.an.instanceof(Array);
                expect(body).to.have.length(5);
                done();
            });
        });
    });

    describe("#Get user timeline limit 5 by url", function() {
        var request = {
            url: 'https://api.twitter.com/1.1/statuses/user_timeline.json?count=5',
            method: 'GET'
        };

        it("should be an array of tweets", function(done) {
            Request({
                url: request.url,
                method: request.method,
                qs: oauth.authorize(request, token),
                json: true
            }, function(err, res, body) {
                expect(err).to.be.a('null');
                expect(body).to.be.an.instanceof(Array);
                expect(body).to.have.length(5);
                done();
            });
        });
    });

    describe("#Get user timeline by header", function() {
        var request = {
            url: 'https://api.twitter.com/1.1/statuses/user_timeline.json',
            method: 'GET'
        };

        it("should be an array of tweets", function(done) {
            Request({
                url: request.url,
                method: request.method,
                qs: request.data,
                headers: oauth.toHeader(oauth.authorize(request, token)),
                json: true
            }, function(err, res, body) {
                expect(err).to.be.a('null');
                expect(body).to.be.an.instanceof(Array);
                done();
            });
        });
    });

    describe.skip("#Tweet", function() {
        var text = 'Testing oauth-1.0a';

        var request = {
            url: 'https://api.twitter.com/1.1/statuses/update.json',
            method: 'POST',
            data: {
                status: text
            }
        };

        it("should be an success object", function(done) {
            Request({
                url: request.url,
                method: request.method,
                form: oauth.authorize(request, token),
                json: true
            }, function(err, res, body) {
                expect(body).to.have.property('entities');
                expect(body).to.have.property('created_at');
                expect(body).to.have.property('id');
                expect(body).to.have.property('text');
                expect(body.text).to.equal(text);
                expect(body.user).to.be.an('object');
                done();
            });
        });
    });

    describe.skip("#Tweet by header", function() {
        var text = 'Testing oauth-1.0a';

        var request = {
            url: 'https://api.twitter.com/1.1/statuses/update.json',
            method: 'POST',
            data: {
                status: text
            }
        };

        it("should be an success object", function(done) {
            Request({
                url: request.url,
                method: request.method,
                form: request.data,
                headers: oauth.toHeader(oauth.authorize(request, token)),
                json: true
            }, function(err, res, body) {
                expect(body).to.have.property('entities');
                expect(body).to.have.property('created_at');
                expect(body).to.have.property('id');
                expect(body).to.have.property('text');
                expect(body.text).to.equal(text);
                expect(body.user).to.be.an('object');
                done();
            });
        });
    });
});