| @ -0,0 +1,70 @@ | |||
| # | |||
| # | |||
| # | |||
| from __future__ import absolute_import, division, print_function, \ | |||
| unicode_literals | |||
| from mock import Mock, call | |||
| from os.path import dirname, join | |||
| from requests import HTTPError | |||
| from requests_mock import ANY, mock as requests_mock | |||
| from unittest import TestCase | |||
| from octodns.record import Record | |||
| from octodns.provider.fastdns import AkamaiProvider, AkamaiClientException | |||
| from octodns.provider.yaml import YamlProvider | |||
| from octodns.zone import Zone | |||
| class TestFastdnsProvider(TestCase): | |||
| expected = Zone('unit.tests.', []) | |||
| source = YamlProvider('test', join(dirname(__file__), 'config')) | |||
| source.populate(expected) | |||
| def test_populate(self): | |||
| provider = AkamaiProvider("test", "client_secret", "host", "access_token", | |||
| "client_token") | |||
| # Bad Auth | |||
| with requests_mock() as mock: | |||
| mock.get(ANY, status_code=401, | |||
| text='{"message": "Authentication failed"}') | |||
| with self.assertRaises(Exception) as ctx: | |||
| zone = Zone('unit.tests.', []) | |||
| provider.populate(zone) | |||
| self.assertEquals("401: Unauthorized", ctx.exception.message) | |||
| # general error | |||
| with requests_mock() as mock: | |||
| mock.get(ANY, status_code=502, text='Things caught fire') | |||
| with self.assertRaises(HTTPError) as ctx: | |||
| zone = Zone('unit.tests.', []) | |||
| provider.populate(zone) | |||
| self.assertEquals(502, ctx.exception.response.status_code) | |||
| # Non-existant zone doesn't populate anything | |||
| with requests_mock() as mock: | |||
| mock.get(ANY, status_code=404, | |||
| text='{"message": "Domain `foo.bar` not found"}') | |||
| zone = Zone('unit.tests.', []) | |||
| provider.populate(zone) | |||
| self.assertEquals(set(), zone.records) | |||
| # # No diffs == no changes | |||
| # with requests_mock() as mock: | |||
| # base = 'https://api.dnsimple.com/v2/42/zones/unit.tests/' \ | |||
| # 'records?page=' | |||
| # with open('tests/fixtures/dnsimple-page-1.json') as fh: | |||
| # mock.get('{}{}'.format(base, 1), text=fh.read()) | |||
| # with open('tests/fixtures/dnsimple-page-2.json') as fh: | |||
| # mock.get('{}{}'.format(base, 2), text=fh.read()) | |||
| # zone = Zone('unit.tests.', []) | |||
| # provider.populate(zone) | |||
| # self.assertEquals(16, len(zone.records)) | |||
| # changes = self.expected.changes(zone, provider) | |||
| # self.assertEquals(0, len(changes)) | |||