Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
 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))
Esempio n. 4
0
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))
Esempio n. 5
0
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)
    ])
Esempio n. 6
0
 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)
Esempio n. 7
0
 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)
Esempio n. 8
0
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)
Esempio n. 9
0
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)
Esempio n. 10
0
    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)
Esempio n. 11
0
 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)