forked from bear/python-twitter
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_twitter_utils.py
More file actions
142 lines (118 loc) · 5.19 KB
/
test_twitter_utils.py
File metadata and controls
142 lines (118 loc) · 5.19 KB
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# encoding: utf-8
from __future__ import unicode_literals
import sys
import unittest
import responses
import twitter
from twitter.twitter_utils import (
calc_expected_status_length,
parse_media_file
)
from twitter import twitter_utils as utils
if sys.version_info > (3,):
unicode = str
class ApiTest(unittest.TestCase):
def setUp(self):
self.api = twitter.Api(
consumer_key='test',
consumer_secret='test',
access_token_key='test',
access_token_secret='test',
sleep_on_rate_limit=False)
self.base_url = 'https://api.twitter.com/1.1'
@responses.activate
def test_parse_media_file_http(self):
with open('testdata/168NQ.jpg', 'rb') as f:
img_data = f.read()
responses.add(
responses.GET,
url='https://raw.githubusercontent.com/bear/python-twitter/master/testdata/168NQ.jpg',
body=img_data)
data_file, filename, file_size, media_type = parse_media_file(
'https://raw.githubusercontent.com/bear/python-twitter/master/testdata/168NQ.jpg')
self.assertTrue(hasattr(data_file, 'read'))
self.assertEqual(filename, '168NQ.jpg')
self.assertEqual(file_size, 44772)
self.assertEqual(media_type, 'image/jpeg')
@responses.activate
def test_parse_media_file_http_with_query_strings(self):
with open('testdata/168NQ.jpg', 'rb') as f:
img_data = f.read()
responses.add(
responses.GET,
url='https://raw.githubusercontent.com/bear/python-twitter/master/testdata/168NQ.jpg',
body=img_data)
data_file, filename, file_size, media_type = parse_media_file(
'https://raw.githubusercontent.com/bear/python-twitter/master/testdata/168NQ.jpg?query=true')
self.assertTrue(hasattr(data_file, 'read'))
self.assertEqual(filename, '168NQ.jpg')
self.assertEqual(file_size, 44772)
self.assertEqual(media_type, 'image/jpeg')
def test_parse_media_file_local_file(self):
data_file, filename, file_size, media_type = parse_media_file(
'testdata/168NQ.jpg')
self.assertTrue(hasattr(data_file, 'read'))
self.assertEqual(filename, '168NQ.jpg')
self.assertEqual(file_size, 44772)
self.assertEqual(media_type, 'image/jpeg')
def test_parse_media_file_fileobj(self):
with open('testdata/168NQ.jpg', 'rb') as f:
data_file, filename, file_size, media_type = parse_media_file(f)
self.assertTrue(hasattr(data_file, 'read'))
self.assertEqual(filename, '168NQ.jpg')
self.assertEqual(file_size, 44772)
self.assertEqual(media_type, 'image/jpeg')
def test_parse_media_file_subtitle(self):
data_file, filename, file_size, media_type = parse_media_file('testdata/subs.srt')
self.assertTrue(hasattr(data_file, 'read'))
self.assertEqual(filename, 'subs.srt')
self.assertEqual(file_size, 157)
self.assertEqual(media_type, 'text/srt')
def test_utils_error_checking(self):
with open('testdata/168NQ.jpg', 'r') as f:
self.assertRaises(
twitter.TwitterError,
lambda: parse_media_file(f))
with open('testdata/user_timeline.json', 'rb') as f:
self.assertRaises(
twitter.TwitterError,
lambda: parse_media_file(f))
self.assertRaises(
twitter.TwitterError,
lambda: twitter.twitter_utils.enf_type('test', int, 'hi'))
def test_calc_expected_status_length(self):
status = 'hi a tweet there'
len_status = calc_expected_status_length(status)
self.assertEqual(len_status, 16)
def test_calc_expected_status_length_with_url(self):
status = 'hi a tweet there example.com'
len_status = calc_expected_status_length(status)
self.assertEqual(len_status, 40)
def test_calc_expected_status_length_with_url_and_extra_spaces(self):
status = 'hi a tweet there example.com'
len_status = calc_expected_status_length(status)
self.assertEqual(len_status, 63)
def test_calc_expected_status_length_with_wide_unicode(self):
status = "…"
len_status = calc_expected_status_length(status)
assert len_status == 2
status = "……"
len_status = calc_expected_status_length(status)
assert len_status == 4
def test_parse_args(self):
user = twitter.User(screen_name='__jcbl__')
out = utils.parse_arg_list(user, 'screen_name')
assert isinstance(out, (str, unicode))
assert out == '__jcbl__'
users = ['__jcbl__', 'notinourselves']
out = utils.parse_arg_list(users, 'screen_name')
assert isinstance(out, (str, unicode))
assert out == '__jcbl__,notinourselves'
users2 = [user] + users
out = utils.parse_arg_list(users2, 'screen_name')
assert isinstance(out, (str, unicode))
assert out == '__jcbl__,__jcbl__,notinourselves'
users = '__jcbl__'
out = utils.parse_arg_list(users, 'screen_name')
assert isinstance(out, (str, unicode))
assert out == '__jcbl__'