~super-friends/friends/13.10

« back to all changes in this revision

Viewing changes to friends/tests/test_twitter.py

  • Committer: Tarmac
  • Author(s): Robert Bruce Park
  • Date: 2013-07-22 20:34:58 UTC
  • mfrom: (224.1.12 simplify-contacts)
  • Revision ID: tarmac-20130722203458-dwbs94fsik5iydt0
Vast simplification of contact logic.

Approved by Ken VanDine, PS Jenkins bot, Robert Bruce Park.

Show diffs side-by-side

added added

removed removed

Lines of Context:
552
552
        get_url.assert_called_with(
553
553
            'https://api.twitter.com/1.1/search/tweets.json?q=hello')
554
554
 
555
 
    def test_getfriendsids(self):
556
 
        get_url = self.protocol._get_url = mock.Mock(
557
 
            return_value={"ids":[1,2,3]})
558
 
        ids = self.protocol._getfriendsids()
559
 
 
560
 
        get_url.assert_called_with(
561
 
            'https://api.twitter.com/1.1/friends/ids.json'
562
 
            )
563
 
        self.assertEqual(ids, [1,2,3])
564
 
 
565
 
    def test_showuser(self):
566
 
        get_url = self.protocol._get_url = mock.Mock(
567
 
            return_value={"name":"Alice"})
568
 
        userdata = self.protocol._showuser(1)
569
 
 
570
 
        get_url.assert_called_with(
571
 
            'https://api.twitter.com/1.1/users/show.json?user_id=1'
572
 
            )
573
 
        self.assertEqual(userdata, {"name":"Alice"})
574
 
 
575
 
    def test_create_contact(self, *mocks):
576
 
        # Receive the users friends.
577
 
        bare_contact = {'name': 'Alice Bob',
578
 
                        'screen_name': 'alice_bob',
579
 
                        'id': 13579}
580
 
 
581
 
        eds_contact = self.protocol._create_contact(bare_contact)
582
 
        twitter_id_attr = eds_contact.get_attribute('twitter-id')
583
 
        self.assertEqual(twitter_id_attr.get_value(), '13579')
584
 
        twitter_name_attr = eds_contact.get_attribute('twitter-name')
585
 
        self.assertEqual(twitter_name_attr.get_value(), 'Alice Bob')
586
 
        web_service_addrs = eds_contact.get_attribute('X-FOLKS-WEB-SERVICES-IDS')
587
 
        params= web_service_addrs.get_params()
588
 
        self.assertEqual(len(params), 2)
589
 
 
590
 
        test_remote_name = False
591
 
        test_twitter_id = False
592
 
 
593
 
        for p in params:
594
 
            if p.get_name() == 'remote-full-name':
595
 
                self.assertEqual(len(p.get_values()), 1)
596
 
                self.assertEqual(p.get_values()[0], 'Alice Bob')
597
 
                test_remote_name = True
598
 
            if p.get_name() == 'twitter-id':
599
 
                self.assertEqual(len(p.get_values()), 1)
600
 
                self.assertEqual(p.get_values()[0], '13579')
601
 
                test_twitter_id = True
602
 
 
603
 
        self.assertTrue(test_remote_name and test_twitter_id)
604
 
 
605
555
    @mock.patch('friends.protocols.twitter.time.sleep')
606
556
    def test_rate_limiter_first_time(self, sleep):
607
557
        # The first time we see a URL, there is no rate limiting.
747
697
        # sleep 100 seconds between each call.
748
698
        self.protocol.home()
749
699
        sleep.assert_called_with(100.0)
 
700
 
 
701
    def test_contacts(self):
 
702
        get = self.protocol._get_url = mock.Mock(
 
703
            return_value=dict(ids=[1,2],name='Bob',screen_name='bobby'))
 
704
        prev = self.protocol._previously_stored_contact = mock.Mock(return_value=False)
 
705
        push = self.protocol._push_to_eds = mock.Mock()
 
706
        self.assertEqual(self.protocol.contacts(), 2)
 
707
        self.assertEqual(
 
708
            get.call_args_list,
 
709
            [mock.call('https://api.twitter.com/1.1/friends/ids.json'),
 
710
             mock.call(url='https://api.twitter.com/1.1/users/show.json?user_id=1'),
 
711
             mock.call(url='https://api.twitter.com/1.1/users/show.json?user_id=2')])
 
712
        self.assertEqual(
 
713
            prev.call_args_list,
 
714
            [mock.call('1'), mock.call('2')])
 
715
        self.assertEqual(
 
716
            push.call_args_list,
 
717
            [mock.call({'twitter-id': '1',
 
718
                        'X-FOLKS-WEB-SERVICES-IDS': {
 
719
                            'twitter-id': '1',
 
720
                            'remote-full-name': 'Bob'},
 
721
                        'X-URIS': 'https://twitter.com/bobby',
 
722
                        'twitter-name': 'Bob',
 
723
                        'twitter-nick': 'bobby'}),
 
724
             mock.call({'twitter-id': '2',
 
725
                        'X-FOLKS-WEB-SERVICES-IDS': {
 
726
                            'twitter-id': '2',
 
727
                            'remote-full-name': 'Bob'},
 
728
                        'X-URIS': 'https://twitter.com/bobby',
 
729
                        'twitter-name': 'Bob',
 
730
                        'twitter-nick': 'bobby'})])