예제 #1
0
    def test_update_template(self):
        template_id = 'ef34a8d9-0ad7-491c-86b0-aea74da15161'
        name = 'Goodbye Message'
        description = 'A goodbye message'
        push = {
            'notification': {
                'alert': 'Bye {{TITLE}} {{FIRST_NAME}} {{LAST_NAME}}!'
            }
        }

        with mock.patch.object(ua.Airship, '_request') as mock_request:
            response = requests.Response()
            response._content = json.dumps({
                'ok':
                True,
                'operation_id':
                '9ce808c8-7176-45dc-b79e-44aa74249a5a'
            }).encode('utf-8')
            response.status_code = 200
            mock_request.return_value = response

            airship = ua.Airship(TEST_KEY, TEST_SECRET)
            template = ua.Template(airship)
            template.name = name
            template.description = description
            template.push = push

            template.update(template_id)

            self.assertEqual(template.template_id, template_id)
예제 #2
0
    def test_update_template_needs_something(self):
        airship = ua.Airship(TEST_KEY, TEST_SECRET)
        template_id = 'ef34a8d9-0ad7-491c-86b0-aea74da15161'
        template = ua.Template(airship)
        # Don't set anything

        self.assertRaises(ValueError, template.update, template_id)
예제 #3
0
    def test_template_creation_payload(self):
        airship = ua.Airship(TEST_KEY, TEST_SECRET)
        t = ua.Template(airship)
        t.name = 'Welcome Message'
        t.description = 'A welcome message'
        t.variables = [{
            'key': 'TITLE',
            'name': 'Title',
            'description': 'e.g. Mr., Ms., Dr., etc.',
            'default_value': ''
        }, {
            'key': 'FIRST_NAME',
            'name': 'First Name',
            'description': 'Given name',
            'default_value': None
        }, {
            'key': 'LAST_NAME',
            'name': 'Last Name',
            'description': 'Family name',
            'default_value': 'Smith'
        }]
        t.push = {
            'notification': {
                'alert': 'Hi {{TITLE}} {{FIRST_NAME}} {{LAST_NAME}}!'
            }
        }

        self.assertDictEqual(
            t.payload, {
                'push': {
                    'notification': {
                        'alert': 'Hi {{TITLE}} {{FIRST_NAME}} {{LAST_NAME}}!'
                    }
                },
                'variables': [{
                    'default_value': '',
                    'name': 'Title',
                    'key': 'TITLE',
                    'description': 'e.g. Mr., Ms., Dr., etc.'
                }, {
                    'default_value': None,
                    'name': 'First Name',
                    'key': 'FIRST_NAME',
                    'description': 'Given name'
                }, {
                    'default_value': 'Smith',
                    'name': 'Last Name',
                    'key': 'LAST_NAME',
                    'description': 'Family name'
                }],
                'name':
                'Welcome Message',
                'description':
                'A welcome message'
            })
예제 #4
0
    def test_create_template_requires_push(self):
        airship = ua.Airship(TEST_KEY, TEST_SECRET)
        template = ua.Template(airship)
        # Do not set push
        template.name = 'Cat sound'
        template.description = 'The cat says...'
        template.variables = [{
            'key': 'SOUND',
            'name': 'Sound',
            'description': 'A sound',
            'default_value': 'Meow'
        }]

        self.assertRaises(ValueError, template.create)
예제 #5
0
    def test_create_template_requires_name(self):
        airship = ua.Airship(TEST_KEY, TEST_SECRET)
        template = ua.Template(airship)
        # Do not set name
        template.description = 'The cat says...'
        template.variables = [{
            'key': 'SOUND',
            'name': 'Sound',
            'description': 'A sound',
            'default_value': 'Meow'
        }]
        template.push = {'notification': {'alert': 'The cat says {{SOUND}}'}}

        self.assertRaises(ValueError, template.create)
예제 #6
0
    def test_create_template(self):
        template_id = 'ef34a8d9-0ad7-491c-86b0-aea74da15161'
        name = 'Welcome Message'
        description = 'A welcome message'
        variables = [{
            'key': 'TITLE',
            'name': 'Title',
            'description': 'e.g. Mr., Ms., Dr., etc.',
            'default_value': ''
        }, {
            'key': 'FIRST_NAME',
            'name': 'First Name',
            'description': 'Given name',
            'default_value': None
        }, {
            'key': 'LAST_NAME',
            'name': 'Last Name',
            'description': 'Family name',
            'default_value': 'Smith'
        }]
        push = {
            'notification': {
                'alert': 'Hi {{TITLE}} {{FIRST_NAME}} {{LAST_NAME}}!'
            }
        }

        with mock.patch.object(ua.Airship, '_request') as mock_request:
            response = requests.Response()
            response._content = json.dumps({
                'ok':
                True,
                'operation_id':
                '9ce808c8-7176-45dc-b79e-44aa74249a5a',
                'template_id':
                'ef34a8d9-0ad7-491c-86b0-aea74da15161'
            }).encode('utf-8')
            response.status_code = 200
            mock_request.return_value = response

            airship = ua.Airship(TEST_KEY, TEST_SECRET)
            template = ua.Template(airship)
            template.name = name
            template.description = description
            template.variables = variables
            template.push = push

            template.create()

            self.assertEqual(template.template_id, template_id)
예제 #7
0
    def test_update_template_no_message(self):
        airship = ua.Airship(TEST_KEY, TEST_SECRET)
        template_id = 'ef34a8d9-0ad7-491c-86b0-aea74da15161'
        template = ua.Template(airship)
        # Set message center (not allowed)
        template.push = {
            'notification': {
                'alert': 'The cat says {{SOUND}}'
            },
            'message': {
                'title': 'Message title',
                'body': 'Message body',
                'content_type': 'text/html'
            }
        }

        self.assertRaises(ValueError, template.update, template_id)
예제 #8
0
    def test_delete_template(self):
        template_id = 'ef34a8d9-0ad7-491c-86b0-aea74da15161'

        with mock.patch.object(ua.Airship, '_request') as mock_request:
            response = requests.Response()
            response._content = json.dumps({
                'ok':
                True,
                'operation_id':
                'a6394ff8-8a65-4494-ad06-677eb8b7ad6a'
            }).encode('utf-8')
            response.status_code = 200
            mock_request.return_value = response

            airship = ua.Airship(TEST_KEY, TEST_SECRET)
            template = ua.Template(airship)
            template.delete(template_id)

            self.assertEqual(template.template_id, template_id)
예제 #9
0
    def test_template_lookup1(self):
        airship = mock.Mock()
        airship._request.return_value = mock.Mock(json=mock.Mock(
            return_value={
                'ok': True,
                'template': {
                    'id':
                    'ef34a8d9-0ad7-491c-86b0-aea74da15161',
                    'created_at':
                    '2017-08-30T23:04:54.014Z',
                    'modified_at':
                    None,
                    'last_used':
                    None,
                    'name':
                    'Welcome Message',
                    'description':
                    '',
                    'variables': [{
                        'key': 'FIRST_NAME',
                        'name': 'First Name',
                        'description': 'Given name',
                        'default_value': None
                    }],
                    'push': {
                        'notification': {
                            'alert':
                            'Hello {{FIRST_NAME}}, this is your '
                            'welcome message!'
                        }
                    }
                }
            }))
        template_id = 'ef34a8d9-0ad7-491c-86b0-aea74da15161'
        ua.Template(airship).lookup(template_id)

        airship._request.assert_called_with(
            body=None,
            method='GET',
            params={},
            url='https://go.urbanairship.com/api/templates/' + template_id,
            version=3)
예제 #10
0
    def test_create_template_no_message(self):
        airship = ua.Airship(TEST_KEY, TEST_SECRET)
        template = ua.Template(airship)
        template.name = 'Cat sound'
        template.description = 'The cat says...'
        template.variables = [{
            'key': 'SOUND',
            'name': 'Sound',
            'description': 'A sound',
            'default_value': 'Meow'
        }]
        # Set message center (not allowed)
        template.push = {
            'notification': {
                'alert': 'The cat says {{SOUND}}'
            },
            'message': {
                'title': 'Message title',
                'body': 'Message body',
                'content_type': 'text/html'
            }
        }

        self.assertRaises(ValueError, template.create)
예제 #11
0
    def test_template_lookup2(self):
        with mock.patch.object(ua.Airship, '_request') as mock_request:
            response = requests.Response()
            response._content = json.dumps({
                'ok': True,
                'template': {
                    'id':
                    'ef34a8d9-0ad7-491c-86b0-aea74da15161',
                    'created_at':
                    '2017-08-30T23:04:54.014Z',
                    'modified_at':
                    '2017-08-31T00:02:41.493Z',
                    'last_used':
                    None,
                    'name':
                    'Welcome Message',
                    'description':
                    'A welcome message',
                    'variables': [{
                        'key': 'TITLE',
                        'name': 'Title',
                        'description': 'e.g. Mr, Ms, Dr, etc.',
                        'default_value': ''
                    }, {
                        'key': 'FIRST_NAME',
                        'name': 'First Name',
                        'description': 'Given name',
                        'default_value': None
                    }, {
                        'key': 'LAST_NAME',
                        'name': 'Last Name',
                        'description': 'Family name',
                        'default_value': None
                    }],
                    'push': {
                        'notification': {
                            'alert':
                            'Hello {{FIRST_NAME}}, this is your '
                            'welcome message!'
                        }
                    }
                }
            }).encode('utf-8')

            response.status_code = 200
            mock_request.return_value = response

            airship = ua.Airship(TEST_KEY, TEST_SECRET)
            template_id = 'ef34a8d9-0ad7-491c-86b0-aea74da15161'
            template_lookup = ua.Template(airship).lookup(template_id)

            date_created = (datetime.datetime.strptime(
                '2017-08-30T23:04:54.014Z', '%Y-%m-%dT%H:%M:%S.%fZ'))
            date_modified = (datetime.datetime.strptime(
                '2017-08-31T00:02:41.493Z', '%Y-%m-%dT%H:%M:%S.%fZ'))

            self.assertEqual(template_lookup.template_id, template_id)
            self.assertEqual(template_lookup.created_at, date_created)
            self.assertEqual(template_lookup.modified_at, date_modified)
            self.assertEqual(template_lookup.last_used, 'UNKNOWN')
            self.assertEqual(template_lookup.name, 'Welcome Message')
            self.assertEqual(template_lookup.description, 'A welcome message')
            self.assertListEqual(template_lookup.variables,
                                 [{
                                     'key': 'TITLE',
                                     'name': 'Title',
                                     'description': 'e.g. Mr, Ms, Dr, etc.',
                                     'default_value': ''
                                 }, {
                                     'key': 'FIRST_NAME',
                                     'name': 'First Name',
                                     'description': 'Given name',
                                     'default_value': None
                                 }, {
                                     'key': 'LAST_NAME',
                                     'name': 'Last Name',
                                     'description': 'Family name',
                                     'default_value': None
                                 }])
            self.assertDictEqual(
                template_lookup.push, {
                    'notification': {
                        'alert':
                        'Hello {{FIRST_NAME}}, this is your '
                        'welcome message!'
                    }
                })