예제 #1
0
    def test_canonical_ids(self):
        logging.root.setLevel(logging.DEBUG)

        mock_dao = MockDao()
        mock_helper = MockGcmHelper()
        gcm = GCM(mock_dao, mock_helper)
        gcm.tokens = [
            GcmToken(gcm_token='0'),
            GcmToken(gcm_token='1'),
            GcmToken(gcm_token='2'),
            GcmToken(gcm_token='3'),
            GcmToken(gcm_token='4'),
            GcmToken(gcm_token='5'),
            GcmToken(gcm_token='6'),
            GcmToken(gcm_token='7')
        ]

        message = 'testing testing 1 2 3'

        response = {
            'multicast_id':
            666,
            'success':
            4,
            'canonical_ids':
            2,
            'results': [
                {
                    'error': 'something else'
                },
                {
                    'message_id': '11'
                },  # success
                {
                    'message_id': '22',
                    'registration_id': '3'
                },  # message with already existing canonical id
                {
                    'message_id': '33'
                },  # canonical id for previous
                {
                    'message_id': '44',
                    'registration_id': '123'
                },  # totally new canonical id
                {
                    'error': 'NotRegistered'
                },  # not registered
                {
                    'error': 'Unavailable'
                },
                {
                    'error': 'something else'
                }
            ]
        }

        js = json.dumps(response)

        response_json = json.loads(js)
        results = response_json["results"]
        index = -1
        for result in results:
            index += 1
            token = gcm.tokens[index]
            gcm.handle_gcm_result(result, token, message)

        self.assertEqual(2, len(mock_dao.removed_tokens))
        self.assertEqual('2', mock_dao.removed_tokens[0].gcm_token)
        self.assertEqual('5', mock_dao.removed_tokens[1].gcm_token)

        self.assertEqual(1, len(mock_dao.updated_tokens))
        self.assertEqual('4', mock_dao.updated_tokens[0][0].gcm_token)
        self.assertEqual('123', mock_dao.updated_tokens[0][1])

        self.assertEqual(1, len(mock_helper.sent_tokens))
        self.assertEqual('6', mock_helper.sent_tokens[0][0].gcm_token)
        self.assertEqual(message, mock_helper.sent_tokens[0][1])