File: direct-messages.t

package info (click to toggle)
libtwitter-api-perl 1.0006-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 424 kB
  • sloc: perl: 2,868; makefile: 7
file content (121 lines) | stat: -rw-r--r-- 4,660 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#!perl
use 5.14.1;
use warnings;
use Test::Spec;
use JSON::MaybeXS qw/decode_json/;

use Twitter::API;

describe direct_messages => sub {
    my $client;
    my $is_stub_test;
    my $new_message_id;
    before each => sub {
        $client = Twitter::API->new_with_traits(
            traits              => 'ApiMethods',
            consumer_key        => 'key',
            consumer_secret     => 'secret',
            access_token        => 'token',
            access_token_secret => 'token-secret',
        );
        if ($client->consumer_key eq 'key') {
            $client->stubs(send_request => sub { return });
            $is_stub_test = 1;
        }
    };

    it 'new_direct_messages_event' => sub {
        my $user_id_str = $client->verify_credentials()->{id_str};
        my $text = 'test message ' . time;
        my $context = $client->new_direct_messages_event($text, $user_id_str);
        if ($is_stub_test) {
            ok $context->http_request->method eq 'POST'
            && $context->http_request->uri =~ m'/direct_messages/events/new\.json$'
            && eq_hash(decode_json($context->http_request->content), {
                event => {
                    type => 'message_create',
                    message_create => {
                        target => { recipient_id => $user_id_str },
                        message_data => { text => $text },
                    },
                },
            });
            $new_message_id = 'dummy';
        } else {
            ok(exists $context->{event});
            $new_message_id = $context->{event}->{id};
        }
    };
    it 'new_direct_messages_event with synthetic args' => sub {
        if ($is_stub_test) {
            my $user_id_str = '666';
            my $text = 'test message ' . time;
            my $context = $client->new_direct_messages_event($text, $user_id_str, {
                -token        => 'passed-token',
                -token_secret => 'passed-secret',
            });

           ok $context->http_request->method eq 'POST'
            && $context->http_request->uri =~ m'/direct_messages/events/new\.json$'
            && eq_hash(decode_json($context->http_request->content), {
                event => {
                    type => 'message_create',
                    message_create => {
                        target => { recipient_id => $user_id_str },
                        message_data => { text => $text },
                    },
                },
            })
            && $context->http_request->header('authorization')
                =~ /oauth_token="passed-token"/;
        }
    };
    it 'new_direct_messages_event with event paylod' => sub {
        if ($is_stub_test) {
            my $event =  {
                type => 'message_create',
                message_create => {
                    target => { recipient_id => 666 },
                    message_data => {
                        text => 'test message ' . time,
                        attachment => {
                            type  => 'media',
                            media => { id => 1234 },
                        },
                    },
                },
            };
            my $context = $client->new_direct_messages_event($event);
            ok $context->http_request->method eq 'POST'
            && $context->http_request->uri =~ m'/direct_messages/events/new\.json$'
            && eq_hash(decode_json($context->http_request->content), { event => $event });
            $new_message_id = 'dummy';
        }
    };
    it 'direct_messages_events' => sub {
        my $context = $client->direct_messages_events();
        if ($is_stub_test) {
            ok $context->http_request->method eq 'GET' && $context->http_request->uri =~ m'/direct_messages/events/list\.json$';
        } else {
            ok(exists $context->{events} && @{ $context->{events} } > 0);
        }
    };
    it 'show_direct_messages_event' => sub {
        my $context = $client->show_direct_messages_event($new_message_id);
        if ($is_stub_test) {
            ok $context->http_request->method eq 'GET' && $context->http_request->uri =~ m'/direct_messages/events/show\.json\?id=dummy$';
        } else {
            ok(exists $context->{event});
        }
    };
    it 'destroy_direct_messages_event' => sub {
        my $context = $client->destroy_direct_messages_event($new_message_id);
        if ($is_stub_test) {
            ok $context->http_request->method eq 'DELETE' && $context->http_request->uri =~ m'/direct_messages/events/destroy\.json\?id=dummy$';
        } else {
            ok($context eq '');
        }
    };
};

runtests;