1#!perl -t
2
3use warnings;
4use strict;
5use Test::More;
6use Test::Deep;
7
8use lib "t/lib";
9use Test::MockPushover;
10
11
12use_ok "WebService::Pushover" or BAIL_OUT "WebService::Pushover failed. Cannot continue testing";
13
14my $API_TOKEN  = "abcdefghijklmnopqrstuvwxyz1234";
15my $USER_TOKEN = "1234abcdefghijklmnopqrstuvwxyz";
16
17spin_mock_server(user_token => $USER_TOKEN, api_token => $API_TOKEN);
18
19my $user  = '0123abcdefghijklmnopqrstuvwxyz';
20my $token = 'abcdefghijklmnopqrstuvwxyz0123';
21
22pushover_ok 'message', {
23	token   => $token,
24	user    => $user,
25	message => "test message",
26},{
27	headers => ignore,
28	path    => '/1/messages.json',
29	data    => {
30		message => 'test+message',
31		user    => $user,
32		token   => $token,
33	},
34}, "passing tokens to message() overrides the built-ins";
35
36pushover_ok 'message', {
37	message => "test message",
38},{
39	headers => ignore,
40	path    => '/1/messages.json',
41	data    => {
42		message => 'test+message',
43		user    => $USER_TOKEN,
44		token   => $API_TOKEN,
45	},
46}, "passing no token/user to message() uses built-ins";
47
48pushover_ok 'message', {
49	message => q|abcdefghijklmnopqrstuvwxyz01234567889!@#$%^&*()-=_+`~[]\\{}\|;:'"/?.><|,
50},{
51	headers => ignore,
52	path    => '/1/messages.json',
53	data    => superhashof({
54		message => q|abcdefghijklmnopqrstuvwxyz01234567889!%40%23%24%25%5E%26*()-%3D_%2B%60~%5B%5D%5C%7B%7D%7C%3B%3A'%22%2F%3F.%3E%3C|,
55	}),
56}, "Odd characters are escaped properly";
57
58pushover_ok 'message', {
59	message   => 'test',
60	device    => 'abcdefghijklmnopqrstuvwxy',
61	title     => 'Title',
62	timestamp => 0,
63	priority  => -1,
64	retry     => 300,
65	expire    => 1,
66	callback  => 'http://asdf.com',
67	url       => 'http://perl.org',
68	url_title => 'Perl!',
69	sound     => 'bugle',
70},{
71	headers => ignore,
72	path    => '/1/messages.json',
73	data    => {
74		message   => 'test',
75		device    => 'abcdefghijklmnopqrstuvwxy',
76		title     => 'Title',
77		timestamp => 0,
78		priority  => -1,
79		retry     => 300,
80		expire    => 1,
81		callback  => 'http%3A%2F%2Fasdf.com',
82		url       => 'http%3A%2F%2Fperl.org',
83		url_title => 'Perl!',
84		sound     => 'bugle',
85		token     => $API_TOKEN,
86		user      => $USER_TOKEN,
87	},
88}, "message() with all the options gets generated properly";
89
90done_testing;
91