예제 #1
0
    def test_models_device_notify_gcm_canonical_ids_response(self, mock_gcm, mock_moment, mock_smtp):
        mock_datetime = moment.utc('2015-06-22', '%Y-%m-%d').timezone(CONFIG['moment']['timezone'])
        mock_moment.side_effect = lambda: mock_datetime

        mock_method = Mock()
        mock_method.json_request = Mock(return_value={
            'canonical': {
                'gcm_id_to_remove_1': 'gcm_to_remain_2',
                'gcm_id_to_remove_2': 'gcm_to_remain_3',
            }
        })
        mock_gcm.side_effect = lambda *a, **ka: mock_method

        Device.insert_one(self.mongo_db, 'email', 'email@to_remain.com')
        Device.insert_one(self.mongo_db, 'gcm', 'gcm_to_remain_1')
        Device.insert_one(self.mongo_db, 'gcm', 'gcm_to_remain_2')
        Device.insert_one(self.mongo_db, 'gcm', 'gcm_id_to_remove_1')
        Device.insert_one(self.mongo_db, 'gcm', 'gcm_id_to_remove_2')

        Device.notify(self.mongo_db, {'fake': 'data'}, collapse_key='fake_type')

        self.assertEqual(1, self.mongo_db.devices.find({'tipo': 'email'}).count())

        query = {'tipo': 'gcm', 'id': {'$not': {'$in': ['gcm_id_to_remove_1', 'gcm_id_to_remove_1']}}}
        self.assertEqual(3, self.mongo_db.devices.find(query).count())
예제 #2
0
    def test_models_device_notify_gcm_unregistered_or_invalid_ids(self, mock_gcm, mock_moment, mock_smtp):
        mock_datetime = moment.utc('2015-06-22', '%Y-%m-%d').timezone(CONFIG['moment']['timezone'])
        mock_moment.side_effect = lambda: mock_datetime

        mock_method = Mock()
        mock_method.json_request = Mock(return_value={
            'errors': {
                'NotRegistered': ['gcm_not_registered'],
                'InvalidRegistration': ['gcm_invalid_registration']
            }
        })
        mock_gcm.side_effect = lambda *a, **ka: mock_method

        Device.insert_one(self.mongo_db, 'email', 'email@to_remain.com')
        Device.insert_one(self.mongo_db, 'gcm', 'gcm_not_registered')
        Device.insert_one(self.mongo_db, 'gcm', 'gcm_invalid_registration')

        Device.notify(self.mongo_db, {'fake': 'data'})

        self.assertEqual(1, self.mongo_db.devices.find({'tipo': 'email'}).count())
        self.assertEqual(0, self.mongo_db.devices.find({'tipo': 'gcm'}).count())