def test_publish_tweet(app, site, mocker): poster = mocker.patch('requests.post') request.form = MultiDict({ 'content': 'You shall not pass by reference!', 'url': 'https://foo.com/bar', }) request.files = {} poster.return_value = FakeResponse( json.dumps({ 'user': { 'screen_name': 'cppgandalf' }, 'id_str': '9899100', })) resp = twitter.publish(site) assert (201 == resp.status_code) assert ('https://twitter.com/cppgandalf/status/9899100' == resp.headers['location']) poster.assert_called_once_with(twitter.CREATE_STATUS_URL, data={ 'status': 'You shall not pass by reference!', }, auth=mocker.ANY)
def test_publish_reply(site, mocker): poster = mocker.patch('requests.post') request.form = MultiDict({ 'in-reply-to': 'https://twitter.com/mashable/status/668134813325508609', 'content': 'Speak, friend, and enter', 'url': 'http://bar.co.uk/bat', }) request.files = {} poster.return_value = FakeResponse( json.dumps({ 'user': { 'screen_name': 'moriafan' }, 'id_str': '234567', })) resp = twitter.publish(site) assert 201 == resp.status_code assert 'https://twitter.com/moriafan/status/234567' == resp.headers[ 'location'] poster.assert_called_once_with(twitter.CREATE_STATUS_URL, data={ 'status': '@mashable Speak, friend, and enter', 'in_reply_to_status_id': '668134813325508609', }, auth=mocker.ANY)
def test_publish_blank(self, poster): poster.return_value = FakeResponse(json.dumps({ 'error': 'Missing required parameter: status', }), 400) with self.app.test_request_context(): resp = twitter.publish(self.site) self.assertEqual(400, resp.status_code) self.assertIn('Missing required', resp.get_data(as_text=True))
def test_publish_blank(app, site, mocker): poster = mocker.patch('requests.post') poster.return_value = FakeResponse( json.dumps({ 'error': 'Missing required parameter: status', }), 400) resp = twitter.publish(site) assert (400 == resp.status_code) assert ('Missing required' in resp.get_data(as_text=True))
def test_publish_media(app, site, mocker): poster = mocker.patch('requests.post') request.form = MultiDict({ # no longer needs to be shortened now that twitter does not count the # photo against us 'content': 'schon nach 40 minuten fast 20 mal so viele leser per #instantarticles gehabt, wie in 6 monaten per #amphtml-artikeln.', }) request.files = MultiDict({ 'photo': FileStorage( open(os.path.dirname(__file__) + '/../silopub/static/dish256.png'), 'dish256.png'), }) poster.side_effect = [ FakeResponse(json.dumps({ 'media_id_string': '2112', })), FakeResponse( json.dumps({ 'user': { 'screen_name': 'fakeuser' }, 'id_str': '0123456789', })), ] resp = twitter.publish(site) assert 201 == resp.status_code assert 'https://twitter.com/fakeuser/status/0123456789' == resp.headers[ 'location'] poster.assert_has_calls([ mocker.call(twitter.UPLOAD_MEDIA_URL, files={ 'media': ('dish256.png', mocker.ANY, mocker.ANY), }, auth=mocker.ANY), mocker.call( twitter.CREATE_STATUS_URL, data={ 'status': 'schon nach 40 minuten fast 20 mal so viele leser per #instantarticles gehabt, wie in 6 monaten per #amphtml-artikeln.', 'media_ids': '2112', }, auth=mocker.ANY) ])
def test_publish_retweet(self, poster): with self.app.test_request_context(): request.form = { 'repost-of': 'https://twitter.com/mallelis/status/668573590170828802', } poster.return_value = FakeResponse(json.dumps({ 'user': {'screen_name': 'jenny'}, 'id_str': '8675309', })) resp = twitter.publish(self.site) self.assertEqual(201, resp.status_code) self.assertEqual('https://twitter.com/jenny/status/8675309', resp.headers['location']) poster.assert_called_once_with( twitter.RETWEET_STATUS_URL.format('668573590170828802'), auth=ANY)
def test_publish_like(self, poster): with self.app.test_request_context(): request.form = { 'like-of': 'https://twitter.com/jack/status/20', } poster.return_value = FakeResponse(json.dumps({ 'user': {'screen_name': 'jack'}, 'id_str': '20', })) resp = twitter.publish(self.site) self.assertEqual(201, resp.status_code) self.assertEqual('https://twitter.com/jack/status/20', resp.headers['location']) poster.assert_called_once_with(twitter.FAVE_STATUS_URL, data={ 'id': '20', }, auth=ANY)
def test_publish_like(app, site, mocker): poster = mocker.patch('requests.post') request.form = MultiDict({ 'like-of': 'https://twitter.com/jack/status/20', }) poster.return_value = FakeResponse( json.dumps({ 'user': { 'screen_name': 'jack' }, 'id_str': '20', })) resp = twitter.publish(site) assert (201 == resp.status_code) assert ('https://twitter.com/jack/status/20' == resp.headers['location']) poster.assert_called_once_with(twitter.FAVE_STATUS_URL, data={ 'id': '20', }, auth=mocker.ANY)
def test_publish_retweet(app, site, mocker): poster = mocker.patch('requests.post') request.form = MultiDict({ 'repost-of': 'https://twitter.com/mallelis/status/668573590170828802', }) poster.return_value = FakeResponse( json.dumps({ 'user': { 'screen_name': 'jenny' }, 'id_str': '8675309', })) resp = twitter.publish(site) assert (201 == resp.status_code) assert ( 'https://twitter.com/jenny/status/8675309' == resp.headers['location']) poster.assert_called_once_with( twitter.RETWEET_STATUS_URL.format('668573590170828802'), auth=mocker.ANY)
def test_publish_tweet(self, poster): with self.app.test_request_context(): request.form = { 'content': 'You shall not pass by reference!', 'url': 'https://foo.com/bar', } request.files = {} poster.return_value = FakeResponse(json.dumps({ 'user': {'screen_name': 'cppgandalf'}, 'id_str': '9899100', })) resp = twitter.publish(self.site) self.assertEqual(201, resp.status_code) self.assertEqual('https://twitter.com/cppgandalf/status/9899100', resp.headers['location']) poster.assert_called_once_with( twitter.CREATE_STATUS_URL, data={ 'status': 'You shall not pass by reference!', }, auth=ANY)
def test_publish_reply(self, poster): with self.app.test_request_context(): request.form = { 'in-reply-to': 'https://twitter.com/mashable/status/668134813325508609', 'content': 'Speak, friend, and enter', 'url': 'http://bar.co.uk/bat', } request.files = {} poster.return_value = FakeResponse(json.dumps({ 'user': {'screen_name': 'moriafan'}, 'id_str': '234567', })) resp = twitter.publish(self.site) self.assertEqual(201, resp.status_code) self.assertEqual('https://twitter.com/moriafan/status/234567', resp.headers['location']) poster.assert_called_once_with( twitter.CREATE_STATUS_URL, data={ 'status': '@mashable Speak, friend, and enter', 'in_reply_to_status_id': '668134813325508609', }, auth=ANY)