Repository: AnalogJ/lexicon

Issue:
CloudXNS Support
yet another big DNS service in China.



Discussion:

Resolving patch:
diff --git a/lexicon/providers/cloudxns.py b/lexicon/providers/cloudxns.py
new file mode 100644
--- /dev/null
+++ b/lexicon/providers/cloudxns.py
@@ -0,0 +1,147 @@
+# -*- coding: utf-8 -*-
+from base import Provider as BaseProvider
+import requests
+import json
+import time
+import hashlib
+import urllib
+
+def ProviderParser(subparser):
+    subparser.add_argument("--auth-username", help="specify API-KEY used authenticate to DNS provider")
+    subparser.add_argument("--auth-token", help="specify SECRET-KEY used authenticate to DNS provider")
+
+class Provider(BaseProvider):
+
+    def __init__(self, options, provider_options={}):
+        super(Provider, self).__init__(options)
+        self.domain_id = None
+        self.api_endpoint = provider_options.get('api_endpoint') or 'https://www.cloudxns.net/api2'
+
+    def authenticate(self):
+
+        payload = self._get('/domain')
+        for record in payload['data']:
+            if record['domain'] == self.options['domain']+'.':
+                self.domain_id = record['id']
+                break
+
+        if self.domain_id == None:
+            raise StandardError('No domain found')
+
+    # Create record. If record already exists with the same content, do nothing'
+    def create_record(self, type, name, content):
+
+        record = {
+            'domain_id': self.domain_id,
+            'host': self._relative_name(name),
+            'value': content,
+            'type': type,
+            'line_id': 1
+        }
+
+        payload = self._post('/record', record)
+
+        print 'create_record: {0}'.format(True) # CloudXNS will return bad HTTP Status when error, will throw at r.raise_for_status() in _request()
+        return True
+
+    # List all records. Return an empty list if no records found
+    # type, name and content are used to filter records.
+    # If possible filter during the query, otherwise filter after response is received.
+    def list_records(self, type=None, name=None, content=None):
+        filter = {}
+
+        payload = self._get('/record/' + self.domain_id, {'host_id':0, 'offset':0, 'row_num': 2000})
+        records = []
+        for record in payload['data']:
+            processed_record = {
+                'type': record['type'],
+                'name': self._full_name(record['host']),
+                'ttl': record['ttl'],
+                'content': record['value'],
+                #this id is useless unless your doing record linking. Lets return the original record identifier.
+                'id': record['record_id'] #
+            }
+            if processed_record['type'] == 'TXT':
+                processed_record['content'] = processed_record['content'].replace('"', '')
+                # CloudXNS will add quotes automaticly for TXT records, https://www.cloudxns.net/Support/detail/id/114.html
+            records.append(processed_record)
+
+        if type:
+            records = [record for record in records if record['type'] == type]
+        if name:
+            records = [record for record in records if record['name'] == self._full_name(name)]
+        if content:
+            records = [record for record in records if record['content'] == content]
+
+        print 'list_records: {0}'.format(records)
+        return records
+
+    # Create or update a record.
+    def update_record(self, identifier, type=None, name=None, content=None):
+
+        if not identifier:
+            records = self.list_records(name=name)
+            if len(records) == 1:
+                identifier = records[0]['id']
+            else:
+                raise StandardError('Record identifier could not be found.')
+
+        data = {
+            'domain_id': self.domain_id,
+            'host': self._relative_name(name),
+            'value': content,
+            'type': type
+        }
+
+        payload = self._put('/record/' + identifier, data)
+
+        print 'update_record: {0}'.format(True)
+        return True
+
+    # Delete an existing record.
+    # If record does not exist, do nothing.
+    def delete_record(self, identifier=None, type=None, name=None, content=None):
+
+        if not identifier:
+            records = self.list_records(type, name, content)
+            if len(records) == 1:
+                identifier = records[0]['id']
+            else:
+                raise StandardError('Record identifier could not be found.')
+
+        payload = self._delete('/record/' + identifier + '/' + self.domain_id)
+
+        # is always True at this point, if a non 200 response is returned an error is raised.
+        print 'delete_record: {0}'.format(True)
+        return True
+
+
+    # Helpers
+    def _request(self, action='GET',  url='/', data=None, query_params=None):
+        if data is None:
+            data = {}
+        data['login_token'] = self.options['auth_username'] + ',' + self.options['auth_token']
+        data['format'] = 'json'
+        if query_params:
+            query_string = '?' + urllib.urlencode(query_params)
+        else:
+            query_string = ''
+            query_params = {}
+        if data:
+            data = json.dumps(data)
+        else:
+            data = ''
+        date = time.strftime('%a %b %d %H:%M:%S %Y', time.localtime())
+        default_headers = {
+            'API-KEY': self.options['auth_username'],
+            'API-REQUEST-DATE': date,
+            'API-HMAC': hashlib.md5(self.options['auth_username'] + self.api_endpoint + url + query_string + data + date + self.options['auth_token']).hexdigest(),
+            'API-FORMAT':'json'
+        }
+        default_auth = None
+        r = requests.request(action, self.api_endpoint + url, params=query_params,
+                             data=data,
+                             headers=default_headers,
+                             auth=default_auth)
+        r.raise_for_status()  # if the request fails for any reason, throw an error.
+        return r.json()


Test patch:
diff --git a/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_authenticate.yaml b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_authenticate.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_authenticate.yaml
@@ -0,0 +1,31 @@
+interactions:
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [7fee70b55288dc6459877a326685e691]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:13:22 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/domain
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"1","data":[{"id":"89415","domain":"capsulecd.com.","status":"ok","level":"3","take_over_status":"no","create_time":"2016-06-08
+        14:49:10","update_time":"2016-06-08 14:57:48","ttl":"600"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['226']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:13:26 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=9cacdde29b33acbacc1663967b582747; expires=Wed,
+          08-Jun-2016 17:13:26 GMT; path=/']
+      transfer-encoding: [chunked]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_authenticate_with_unmanaged_domain_should_fail.yaml b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_authenticate_with_unmanaged_domain_should_fail.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_authenticate_with_unmanaged_domain_should_fail.yaml
@@ -0,0 +1,31 @@
+interactions:
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [b640f14091e463e42d1aabae5516eb32]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:13:27 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/domain
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"1","data":[{"id":"89415","domain":"capsulecd.com.","status":"ok","level":"3","take_over_status":"no","create_time":"2016-06-08
+        14:49:10","update_time":"2016-06-08 14:57:48","ttl":"600"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['226']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:13:31 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=ea38e21bea7961af0adeb7002f4f98e9; expires=Wed,
+          08-Jun-2016 17:13:31 GMT; path=/']
+      transfer-encoding: [chunked]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_create_record_for_A_with_valid_name_and_content.yaml b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_create_record_for_A_with_valid_name_and_content.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_create_record_for_A_with_valid_name_and_content.yaml
@@ -0,0 +1,59 @@
+interactions:
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [45acdc7753b4a7122dcd861c5ea67e06]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:13:31 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/domain
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"1","data":[{"id":"89415","domain":"capsulecd.com.","status":"ok","level":"3","take_over_status":"no","create_time":"2016-06-08
+        14:49:10","update_time":"2016-06-08 14:57:48","ttl":"600"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['226']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:13:36 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=e2e6d68651e3dc3f27e30f6111627c98; expires=Wed,
+          08-Jun-2016 17:13:36 GMT; path=/']
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"format": "json", "login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53",
+      "value": "127.0.0.1", "line_id": 1, "host": "localhost", "type": "A", "domain_id":
+      "89415"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [25ca82db0b9b95dff930d3f03b05c4dd]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:14:56 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['178']
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://www.cloudxns.net/api2/record
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","record_id":[1373543]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['52']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:14:58 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=5bcfc2c16c0e2fafef1969536bc05984; expires=Wed,
+          08-Jun-2016 17:14:58 GMT; path=/']
+      transfer-encoding: [chunked]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_create_record_for_CNAME_with_valid_name_and_content.yaml b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_create_record_for_CNAME_with_valid_name_and_content.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_create_record_for_CNAME_with_valid_name_and_content.yaml
@@ -0,0 +1,59 @@
+interactions:
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [329ff253c267d150cec81e88390aeb27]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:13:36 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/domain
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"1","data":[{"id":"89415","domain":"capsulecd.com.","status":"ok","level":"3","take_over_status":"no","create_time":"2016-06-08
+        14:49:10","update_time":"2016-06-08 14:57:48","ttl":"600"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['226']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:13:41 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=d28fe1662f3d017ba6356d3d4da85c09; expires=Wed,
+          08-Jun-2016 17:13:41 GMT; path=/']
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"format": "json", "login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53",
+      "value": "docs.example.com", "line_id": 1, "host": "docs", "type": "CNAME",
+      "domain_id": "89415"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [979b71047bb514f5ffe0b1430e8dd01e]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:14:58 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['184']
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://www.cloudxns.net/api2/record
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","record_id":[1373545]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['52']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:15:00 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=2239cda33cf5dae187af7af0bbe3abc9; expires=Wed,
+          08-Jun-2016 17:15:00 GMT; path=/']
+      transfer-encoding: [chunked]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_create_record_for_TXT_with_fqdn_name_and_content.yaml b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_create_record_for_TXT_with_fqdn_name_and_content.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_create_record_for_TXT_with_fqdn_name_and_content.yaml
@@ -0,0 +1,57 @@
+interactions:
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [ef75116c0c28c9e155968ea0541ff256]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:13:42 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/domain
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"1","data":[{"id":"89415","domain":"capsulecd.com.","status":"ok","level":"3","take_over_status":"no","create_time":"2016-06-08
+        14:49:10","update_time":"2016-06-08 14:57:48","ttl":"600"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['226']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:13:43 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=feeea29812fe7b7d05e7ed9422c3c044; expires=Wed,
+          08-Jun-2016 17:13:43 GMT; path=/']
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"format": "json", "login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53",
+      "value": "challengetoken", "line_id": 1, "host": "_acme-challenge.fqdn", "type":
+      "TXT", "domain_id": "89415"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [3f7b60224686518923dfd1755607365e]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:15:00 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['196']
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://www.cloudxns.net/api2/record
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","record_id":[1373547]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['52']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:15:02 GMT']
+      server: [Tengine]
+      transfer-encoding: [chunked]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_create_record_for_TXT_with_full_name_and_content.yaml b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_create_record_for_TXT_with_full_name_and_content.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_create_record_for_TXT_with_full_name_and_content.yaml
@@ -0,0 +1,57 @@
+interactions:
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [8ed04346fcf8e632e937fa82fb89bc5e]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:13:44 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/domain
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"1","data":[{"id":"89415","domain":"capsulecd.com.","status":"ok","level":"3","take_over_status":"no","create_time":"2016-06-08
+        14:49:10","update_time":"2016-06-08 14:57:48","ttl":"600"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['226']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:13:52 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=4fe2a5df2691d8d6a8207ff96814ca70; expires=Wed,
+          08-Jun-2016 17:13:52 GMT; path=/']
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"format": "json", "login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53",
+      "value": "challengetoken", "line_id": 1, "host": "_acme-challenge.full", "type":
+      "TXT", "domain_id": "89415"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [db1fce50e79b79e6872bc0662813ebb2]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:15:02 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['196']
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://www.cloudxns.net/api2/record
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","record_id":[1373549]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['52']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:15:04 GMT']
+      server: [Tengine]
+      transfer-encoding: [chunked]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_create_record_for_TXT_with_valid_name_and_content.yaml b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_create_record_for_TXT_with_valid_name_and_content.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_create_record_for_TXT_with_valid_name_and_content.yaml
@@ -0,0 +1,57 @@
+interactions:
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [3dd9bfac2703e736a50d966a991ada3c]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:13:57 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/domain
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"1","data":[{"id":"89415","domain":"capsulecd.com.","status":"ok","level":"3","take_over_status":"no","create_time":"2016-06-08
+        14:49:10","update_time":"2016-06-08 14:57:48","ttl":"600"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['226']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:14:21 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=7c306270827d565c72b31e8d9caf5706; expires=Wed,
+          08-Jun-2016 17:14:21 GMT; path=/']
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"format": "json", "login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53",
+      "value": "challengetoken", "line_id": 1, "host": "_acme-challenge.test", "type":
+      "TXT", "domain_id": "89415"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [df45857b4da5710308857a5e4251b782]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:15:04 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['196']
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://www.cloudxns.net/api2/record
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","record_id":[1373551]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['52']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:15:07 GMT']
+      server: [Tengine]
+      transfer-encoding: [chunked]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_should_remove_record.yaml b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_should_remove_record.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_should_remove_record.yaml
@@ -0,0 +1,160 @@
+interactions:
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [e2558dcce10e8dc2a704a6ee1e83e8ec]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:14:21 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/domain
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"1","data":[{"id":"89415","domain":"capsulecd.com.","status":"ok","level":"3","take_over_status":"no","create_time":"2016-06-08
+        14:49:10","update_time":"2016-06-08 14:57:48","ttl":"600"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['226']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:14:29 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=826605e6d0da6348612845bb41113cd8; expires=Wed,
+          08-Jun-2016 17:14:29 GMT; path=/']
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"format": "json", "login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53",
+      "value": "challengetoken", "line_id": 1, "host": "delete.testfilt", "type":
+      "TXT", "domain_id": "89415"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [1eb466fdefcf55b9196e1e6e639a4007]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:15:07 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['191']
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://www.cloudxns.net/api2/record
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","record_id":[1373553]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['52']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:15:09 GMT']
+      server: [Tengine]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [4253eaa32948cf83a507ecf61061c30a]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:15:45 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/record/89415?host_id=0&row_num=2000&offset=0
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"15","offset":0,"row_num":2000,"data":[{"record_id":"1373553","host_id":"1155561","host":"delete.testfilt","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:09","update_time":"2016-06-08 15:15:09"},{"record_id":"1373555","host_id":"1155563","host":"delete.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:11","update_time":"2016-06-08 15:15:11"},{"record_id":"1373557","host_id":"1155565","host":"delete.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:12","update_time":"2016-06-08 15:15:12"},{"record_id":"1373559","host_id":"1155567","host":"delete.testid","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:13","update_time":"2016-06-08 15:15:14"},{"record_id":"1373545","host_id":"1155553","host":"docs","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"docs.example.com.","ttl":"600","type":"CNAME","status":"ok","create_time":"2016-06-08
+        15:15:00","update_time":"2016-06-08 15:15:00"},{"record_id":"1373543","host_id":"1155551","host":"localhost","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"127.0.0.1","ttl":"600","type":"A","status":"ok","create_time":"2016-06-08
+        15:14:58","update_time":"2016-06-08 15:14:58"},{"record_id":"1373567","host_id":"1155575","host":"orig.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:23","update_time":"2016-06-08 15:15:23"},{"record_id":"1373569","host_id":"1155577","host":"orig.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:26","update_time":"2016-06-08 15:15:26"},{"record_id":"1373571","host_id":"1155579","host":"orig.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:27","update_time":"2016-06-08 15:15:27"},{"record_id":"1373561","host_id":"1155569","host":"random.fqdntest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:15","update_time":"2016-06-08 15:15:15"},{"record_id":"1373563","host_id":"1155571","host":"random.fulltest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:17","update_time":"2016-06-08 15:15:17"},{"record_id":"1373565","host_id":"1155573","host":"random.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:19","update_time":"2016-06-08 15:15:19"},{"record_id":"1373547","host_id":"1155555","host":"_acme-challenge.fqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:02","update_time":"2016-06-08 15:15:02"},{"record_id":"1373549","host_id":"1155557","host":"_acme-challenge.full","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:04","update_time":"2016-06-08 15:15:04"},{"record_id":"1373551","host_id":"1155559","host":"_acme-challenge.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:07","update_time":"2016-06-08 15:15:07"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['4400']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:15:47 GMT']
+      server: [Tengine]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [a92ac1335f8924c8669c996db8f5554e]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:16:09 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: DELETE
+    uri: https://www.cloudxns.net/api2/record/1373553/89415
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success"}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['30']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:16:12 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=4efd27f29683940e888e1d60b6e1c883; expires=Wed,
+          08-Jun-2016 17:16:12 GMT; path=/']
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [7c8dff50f719b1dc263e5eb488ff1f53]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:16:32 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/record/89415?host_id=0&row_num=2000&offset=0
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"11","offset":0,"row_num":2000,"data":[{"record_id":"1373545","host_id":"1155553","host":"docs","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"docs.example.com.","ttl":"600","type":"CNAME","status":"ok","create_time":"2016-06-08
+        15:15:00","update_time":"2016-06-08 15:15:00"},{"record_id":"1373543","host_id":"1155551","host":"localhost","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"127.0.0.1","ttl":"600","type":"A","status":"ok","create_time":"2016-06-08
+        15:14:58","update_time":"2016-06-08 15:14:58"},{"record_id":"1373561","host_id":"1155569","host":"random.fqdntest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:15","update_time":"2016-06-08 15:15:15"},{"record_id":"1373563","host_id":"1155571","host":"random.fulltest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:17","update_time":"2016-06-08 15:15:17"},{"record_id":"1373565","host_id":"1155573","host":"random.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:19","update_time":"2016-06-08 15:15:19"},{"record_id":"1373567","host_id":"1155583","host":"updated.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:16:23","update_time":"2016-06-08 15:16:23"},{"record_id":"1373569","host_id":"1155585","host":"updated.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:16:25","update_time":"2016-06-08 15:16:25"},{"record_id":"1373571","host_id":"1155587","host":"updated.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:16:28","update_time":"2016-06-08 15:16:28"},{"record_id":"1373547","host_id":"1155555","host":"_acme-challenge.fqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:02","update_time":"2016-06-08 15:15:02"},{"record_id":"1373549","host_id":"1155557","host":"_acme-challenge.full","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:04","update_time":"2016-06-08 15:15:04"},{"record_id":"1373551","host_id":"1155559","host":"_acme-challenge.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:07","update_time":"2016-06-08 15:15:07"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['3251']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:16:33 GMT']
+      server: [Tengine]
+      transfer-encoding: [chunked]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_with_fqdn_name_should_remove_record.yaml b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_with_fqdn_name_should_remove_record.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_with_fqdn_name_should_remove_record.yaml
@@ -0,0 +1,160 @@
+interactions:
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [3470aacbcf705525a7253c44ee76d517]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:14:30 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/domain
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"1","data":[{"id":"89415","domain":"capsulecd.com.","status":"ok","level":"3","take_over_status":"no","create_time":"2016-06-08
+        14:49:10","update_time":"2016-06-08 14:57:48","ttl":"600"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['226']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:14:32 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=2a910ec6e59e74112d1de275d0a38d5b; expires=Wed,
+          08-Jun-2016 17:14:32 GMT; path=/']
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"format": "json", "login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53",
+      "value": "challengetoken", "line_id": 1, "host": "delete.testfqdn", "type":
+      "TXT", "domain_id": "89415"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [9d7826813995911e2f37802531ff86d1]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:15:09 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['191']
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://www.cloudxns.net/api2/record
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","record_id":[1373555]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['52']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:15:11 GMT']
+      server: [Tengine]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [082b021e4cec0957ffa5bb949df25acc]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:15:48 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/record/89415?host_id=0&row_num=2000&offset=0
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"15","offset":0,"row_num":2000,"data":[{"record_id":"1373553","host_id":"1155561","host":"delete.testfilt","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:09","update_time":"2016-06-08 15:15:09"},{"record_id":"1373555","host_id":"1155563","host":"delete.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:11","update_time":"2016-06-08 15:15:11"},{"record_id":"1373557","host_id":"1155565","host":"delete.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:12","update_time":"2016-06-08 15:15:12"},{"record_id":"1373559","host_id":"1155567","host":"delete.testid","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:13","update_time":"2016-06-08 15:15:14"},{"record_id":"1373545","host_id":"1155553","host":"docs","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"docs.example.com.","ttl":"600","type":"CNAME","status":"ok","create_time":"2016-06-08
+        15:15:00","update_time":"2016-06-08 15:15:00"},{"record_id":"1373543","host_id":"1155551","host":"localhost","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"127.0.0.1","ttl":"600","type":"A","status":"ok","create_time":"2016-06-08
+        15:14:58","update_time":"2016-06-08 15:14:58"},{"record_id":"1373567","host_id":"1155575","host":"orig.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:23","update_time":"2016-06-08 15:15:23"},{"record_id":"1373569","host_id":"1155577","host":"orig.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:26","update_time":"2016-06-08 15:15:26"},{"record_id":"1373571","host_id":"1155579","host":"orig.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:27","update_time":"2016-06-08 15:15:27"},{"record_id":"1373561","host_id":"1155569","host":"random.fqdntest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:15","update_time":"2016-06-08 15:15:15"},{"record_id":"1373563","host_id":"1155571","host":"random.fulltest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:17","update_time":"2016-06-08 15:15:17"},{"record_id":"1373565","host_id":"1155573","host":"random.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:19","update_time":"2016-06-08 15:15:19"},{"record_id":"1373547","host_id":"1155555","host":"_acme-challenge.fqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:02","update_time":"2016-06-08 15:15:02"},{"record_id":"1373549","host_id":"1155557","host":"_acme-challenge.full","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:04","update_time":"2016-06-08 15:15:04"},{"record_id":"1373551","host_id":"1155559","host":"_acme-challenge.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:07","update_time":"2016-06-08 15:15:07"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['4400']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:15:49 GMT']
+      server: [Tengine]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [5b8169e2ef2765ff424c25a456a2783d]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:16:12 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: DELETE
+    uri: https://www.cloudxns.net/api2/record/1373555/89415
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success"}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['30']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:16:17 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=a14cb3c141569cd037a68ce2905122ac; expires=Wed,
+          08-Jun-2016 17:16:17 GMT; path=/']
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [6fc816bddcba21797cb39db1a8c73db2]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:16:34 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/record/89415?host_id=0&row_num=2000&offset=0
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"11","offset":0,"row_num":2000,"data":[{"record_id":"1373545","host_id":"1155553","host":"docs","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"docs.example.com.","ttl":"600","type":"CNAME","status":"ok","create_time":"2016-06-08
+        15:15:00","update_time":"2016-06-08 15:15:00"},{"record_id":"1373543","host_id":"1155551","host":"localhost","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"127.0.0.1","ttl":"600","type":"A","status":"ok","create_time":"2016-06-08
+        15:14:58","update_time":"2016-06-08 15:14:58"},{"record_id":"1373561","host_id":"1155569","host":"random.fqdntest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:15","update_time":"2016-06-08 15:15:15"},{"record_id":"1373563","host_id":"1155571","host":"random.fulltest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:17","update_time":"2016-06-08 15:15:17"},{"record_id":"1373565","host_id":"1155573","host":"random.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:19","update_time":"2016-06-08 15:15:19"},{"record_id":"1373567","host_id":"1155583","host":"updated.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:16:23","update_time":"2016-06-08 15:16:23"},{"record_id":"1373569","host_id":"1155585","host":"updated.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:16:25","update_time":"2016-06-08 15:16:25"},{"record_id":"1373571","host_id":"1155587","host":"updated.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:16:28","update_time":"2016-06-08 15:16:28"},{"record_id":"1373547","host_id":"1155555","host":"_acme-challenge.fqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:02","update_time":"2016-06-08 15:15:02"},{"record_id":"1373549","host_id":"1155557","host":"_acme-challenge.full","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:04","update_time":"2016-06-08 15:15:04"},{"record_id":"1373551","host_id":"1155559","host":"_acme-challenge.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:07","update_time":"2016-06-08 15:15:07"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['3251']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:16:35 GMT']
+      server: [Tengine]
+      transfer-encoding: [chunked]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_with_full_name_should_remove_record.yaml b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_with_full_name_should_remove_record.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_with_full_name_should_remove_record.yaml
@@ -0,0 +1,160 @@
+interactions:
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [65fc7df5cd95d9b48c8df9f82a114864]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:14:33 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/domain
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"1","data":[{"id":"89415","domain":"capsulecd.com.","status":"ok","level":"3","take_over_status":"no","create_time":"2016-06-08
+        14:49:10","update_time":"2016-06-08 14:57:48","ttl":"600"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['226']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:14:34 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=7db11ec08467f4475e63a6c4e7f8c9b2; expires=Wed,
+          08-Jun-2016 17:14:34 GMT; path=/']
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"format": "json", "login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53",
+      "value": "challengetoken", "line_id": 1, "host": "delete.testfull", "type":
+      "TXT", "domain_id": "89415"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [a02958c3def71a280c11bdfc74bda107]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:15:11 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['191']
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://www.cloudxns.net/api2/record
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","record_id":[1373557]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['52']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:15:12 GMT']
+      server: [Tengine]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [8d089d26f6588d5b7995a3ba65dbefad]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:15:50 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/record/89415?host_id=0&row_num=2000&offset=0
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"15","offset":0,"row_num":2000,"data":[{"record_id":"1373553","host_id":"1155561","host":"delete.testfilt","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:09","update_time":"2016-06-08 15:15:09"},{"record_id":"1373555","host_id":"1155563","host":"delete.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:11","update_time":"2016-06-08 15:15:11"},{"record_id":"1373557","host_id":"1155565","host":"delete.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:12","update_time":"2016-06-08 15:15:12"},{"record_id":"1373559","host_id":"1155567","host":"delete.testid","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:13","update_time":"2016-06-08 15:15:14"},{"record_id":"1373545","host_id":"1155553","host":"docs","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"docs.example.com.","ttl":"600","type":"CNAME","status":"ok","create_time":"2016-06-08
+        15:15:00","update_time":"2016-06-08 15:15:00"},{"record_id":"1373543","host_id":"1155551","host":"localhost","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"127.0.0.1","ttl":"600","type":"A","status":"ok","create_time":"2016-06-08
+        15:14:58","update_time":"2016-06-08 15:14:58"},{"record_id":"1373567","host_id":"1155575","host":"orig.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:23","update_time":"2016-06-08 15:15:23"},{"record_id":"1373569","host_id":"1155577","host":"orig.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:26","update_time":"2016-06-08 15:15:26"},{"record_id":"1373571","host_id":"1155579","host":"orig.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:27","update_time":"2016-06-08 15:15:27"},{"record_id":"1373561","host_id":"1155569","host":"random.fqdntest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:15","update_time":"2016-06-08 15:15:15"},{"record_id":"1373563","host_id":"1155571","host":"random.fulltest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:17","update_time":"2016-06-08 15:15:17"},{"record_id":"1373565","host_id":"1155573","host":"random.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:19","update_time":"2016-06-08 15:15:19"},{"record_id":"1373547","host_id":"1155555","host":"_acme-challenge.fqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:02","update_time":"2016-06-08 15:15:02"},{"record_id":"1373549","host_id":"1155557","host":"_acme-challenge.full","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:04","update_time":"2016-06-08 15:15:04"},{"record_id":"1373551","host_id":"1155559","host":"_acme-challenge.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:07","update_time":"2016-06-08 15:15:07"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['4400']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:15:51 GMT']
+      server: [Tengine]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [5864fd0de79b1c2536d2b6791f5c01ae]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:16:17 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: DELETE
+    uri: https://www.cloudxns.net/api2/record/1373557/89415
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success"}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['30']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:16:18 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=e19576060db2f3926da7fc82eaf59743; expires=Wed,
+          08-Jun-2016 17:16:18 GMT; path=/']
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [ae3ae36d8401591214d34791351ef66a]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:16:35 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/record/89415?host_id=0&row_num=2000&offset=0
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"11","offset":0,"row_num":2000,"data":[{"record_id":"1373545","host_id":"1155553","host":"docs","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"docs.example.com.","ttl":"600","type":"CNAME","status":"ok","create_time":"2016-06-08
+        15:15:00","update_time":"2016-06-08 15:15:00"},{"record_id":"1373543","host_id":"1155551","host":"localhost","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"127.0.0.1","ttl":"600","type":"A","status":"ok","create_time":"2016-06-08
+        15:14:58","update_time":"2016-06-08 15:14:58"},{"record_id":"1373561","host_id":"1155569","host":"random.fqdntest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:15","update_time":"2016-06-08 15:15:15"},{"record_id":"1373563","host_id":"1155571","host":"random.fulltest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:17","update_time":"2016-06-08 15:15:17"},{"record_id":"1373565","host_id":"1155573","host":"random.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:19","update_time":"2016-06-08 15:15:19"},{"record_id":"1373567","host_id":"1155583","host":"updated.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:16:23","update_time":"2016-06-08 15:16:23"},{"record_id":"1373569","host_id":"1155585","host":"updated.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:16:25","update_time":"2016-06-08 15:16:25"},{"record_id":"1373571","host_id":"1155587","host":"updated.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:16:28","update_time":"2016-06-08 15:16:28"},{"record_id":"1373547","host_id":"1155555","host":"_acme-challenge.fqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:02","update_time":"2016-06-08 15:15:02"},{"record_id":"1373549","host_id":"1155557","host":"_acme-challenge.full","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:04","update_time":"2016-06-08 15:15:04"},{"record_id":"1373551","host_id":"1155559","host":"_acme-challenge.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:07","update_time":"2016-06-08 15:15:07"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['3251']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:16:37 GMT']
+      server: [Tengine]
+      transfer-encoding: [chunked]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_delete_record_by_identifier_should_remove_record.yaml b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_delete_record_by_identifier_should_remove_record.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_delete_record_by_identifier_should_remove_record.yaml
@@ -0,0 +1,160 @@
+interactions:
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [48906a1b6863481f6307e8169df98d5e]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:14:34 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/domain
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"1","data":[{"id":"89415","domain":"capsulecd.com.","status":"ok","level":"3","take_over_status":"no","create_time":"2016-06-08
+        14:49:10","update_time":"2016-06-08 14:57:48","ttl":"600"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['226']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:14:36 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=828ccf90705db4069259bf0755bf60de; expires=Wed,
+          08-Jun-2016 17:14:36 GMT; path=/']
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"format": "json", "login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53",
+      "value": "challengetoken", "line_id": 1, "host": "delete.testid", "type": "TXT",
+      "domain_id": "89415"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [b2284714cbb2a1673f2eed83b8e15b0a]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:15:12 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['189']
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://www.cloudxns.net/api2/record
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","record_id":[1373559]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['52']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:15:14 GMT']
+      server: [Tengine]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [6b534616c92f2b79f6faef245d41c70b]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:15:52 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/record/89415?host_id=0&row_num=2000&offset=0
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"15","offset":0,"row_num":2000,"data":[{"record_id":"1373553","host_id":"1155561","host":"delete.testfilt","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:09","update_time":"2016-06-08 15:15:09"},{"record_id":"1373555","host_id":"1155563","host":"delete.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:11","update_time":"2016-06-08 15:15:11"},{"record_id":"1373557","host_id":"1155565","host":"delete.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:12","update_time":"2016-06-08 15:15:12"},{"record_id":"1373559","host_id":"1155567","host":"delete.testid","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:13","update_time":"2016-06-08 15:15:14"},{"record_id":"1373545","host_id":"1155553","host":"docs","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"docs.example.com.","ttl":"600","type":"CNAME","status":"ok","create_time":"2016-06-08
+        15:15:00","update_time":"2016-06-08 15:15:00"},{"record_id":"1373543","host_id":"1155551","host":"localhost","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"127.0.0.1","ttl":"600","type":"A","status":"ok","create_time":"2016-06-08
+        15:14:58","update_time":"2016-06-08 15:14:58"},{"record_id":"1373567","host_id":"1155575","host":"orig.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:23","update_time":"2016-06-08 15:15:23"},{"record_id":"1373569","host_id":"1155577","host":"orig.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:26","update_time":"2016-06-08 15:15:26"},{"record_id":"1373571","host_id":"1155579","host":"orig.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:27","update_time":"2016-06-08 15:15:27"},{"record_id":"1373561","host_id":"1155569","host":"random.fqdntest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:15","update_time":"2016-06-08 15:15:15"},{"record_id":"1373563","host_id":"1155571","host":"random.fulltest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:17","update_time":"2016-06-08 15:15:17"},{"record_id":"1373565","host_id":"1155573","host":"random.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:19","update_time":"2016-06-08 15:15:19"},{"record_id":"1373547","host_id":"1155555","host":"_acme-challenge.fqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:02","update_time":"2016-06-08 15:15:02"},{"record_id":"1373549","host_id":"1155557","host":"_acme-challenge.full","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:04","update_time":"2016-06-08 15:15:04"},{"record_id":"1373551","host_id":"1155559","host":"_acme-challenge.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:07","update_time":"2016-06-08 15:15:07"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['4400']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:15:54 GMT']
+      server: [Tengine]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [dc6b1aa5aba0158ba501e6c2552966ed]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:16:19 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: DELETE
+    uri: https://www.cloudxns.net/api2/record/1373559/89415
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success"}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['30']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:16:21 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=54f13aaae0fdb16905fa6e3d20eab6ae; expires=Wed,
+          08-Jun-2016 17:16:21 GMT; path=/']
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [b2c7dbdf2efc6c3fb8c544ddb35a910d]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:16:37 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/record/89415?host_id=0&row_num=2000&offset=0
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"11","offset":0,"row_num":2000,"data":[{"record_id":"1373545","host_id":"1155553","host":"docs","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"docs.example.com.","ttl":"600","type":"CNAME","status":"ok","create_time":"2016-06-08
+        15:15:00","update_time":"2016-06-08 15:15:00"},{"record_id":"1373543","host_id":"1155551","host":"localhost","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"127.0.0.1","ttl":"600","type":"A","status":"ok","create_time":"2016-06-08
+        15:14:58","update_time":"2016-06-08 15:14:58"},{"record_id":"1373561","host_id":"1155569","host":"random.fqdntest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:15","update_time":"2016-06-08 15:15:15"},{"record_id":"1373563","host_id":"1155571","host":"random.fulltest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:17","update_time":"2016-06-08 15:15:17"},{"record_id":"1373565","host_id":"1155573","host":"random.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:19","update_time":"2016-06-08 15:15:19"},{"record_id":"1373567","host_id":"1155583","host":"updated.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:16:23","update_time":"2016-06-08 15:16:23"},{"record_id":"1373569","host_id":"1155585","host":"updated.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:16:25","update_time":"2016-06-08 15:16:25"},{"record_id":"1373571","host_id":"1155587","host":"updated.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:16:28","update_time":"2016-06-08 15:16:28"},{"record_id":"1373547","host_id":"1155555","host":"_acme-challenge.fqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:02","update_time":"2016-06-08 15:15:02"},{"record_id":"1373549","host_id":"1155557","host":"_acme-challenge.full","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:04","update_time":"2016-06-08 15:15:04"},{"record_id":"1373551","host_id":"1155559","host":"_acme-challenge.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:07","update_time":"2016-06-08 15:15:07"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['3251']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:16:40 GMT']
+      server: [Tengine]
+      transfer-encoding: [chunked]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_list_records_with_fqdn_name_filter_should_return_record.yaml b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_list_records_with_fqdn_name_filter_should_return_record.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_list_records_with_fqdn_name_filter_should_return_record.yaml
@@ -0,0 +1,97 @@
+interactions:
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [1577adbf358bf47de58991b759a5b736]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:14:36 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/domain
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"1","data":[{"id":"89415","domain":"capsulecd.com.","status":"ok","level":"3","take_over_status":"no","create_time":"2016-06-08
+        14:49:10","update_time":"2016-06-08 14:57:48","ttl":"600"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['226']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:14:38 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=60b8ec2428e015425638f4fb98e1ba94; expires=Wed,
+          08-Jun-2016 17:14:38 GMT; path=/']
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"format": "json", "login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53",
+      "value": "challengetoken", "line_id": 1, "host": "random.fqdntest", "type":
+      "TXT", "domain_id": "89415"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [80b2d251f95e83afe29da14c7652a083]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:15:14 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['191']
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://www.cloudxns.net/api2/record
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","record_id":[1373561]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['52']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:15:15 GMT']
+      server: [Tengine]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [f9aef6cc63766bd98815c7609dc96d41]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:15:54 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/record/89415?host_id=0&row_num=2000&offset=0
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"15","offset":0,"row_num":2000,"data":[{"record_id":"1373553","host_id":"1155561","host":"delete.testfilt","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:09","update_time":"2016-06-08 15:15:09"},{"record_id":"1373555","host_id":"1155563","host":"delete.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:11","update_time":"2016-06-08 15:15:11"},{"record_id":"1373557","host_id":"1155565","host":"delete.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:12","update_time":"2016-06-08 15:15:12"},{"record_id":"1373559","host_id":"1155567","host":"delete.testid","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:13","update_time":"2016-06-08 15:15:14"},{"record_id":"1373545","host_id":"1155553","host":"docs","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"docs.example.com.","ttl":"600","type":"CNAME","status":"ok","create_time":"2016-06-08
+        15:15:00","update_time":"2016-06-08 15:15:00"},{"record_id":"1373543","host_id":"1155551","host":"localhost","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"127.0.0.1","ttl":"600","type":"A","status":"ok","create_time":"2016-06-08
+        15:14:58","update_time":"2016-06-08 15:14:58"},{"record_id":"1373567","host_id":"1155575","host":"orig.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:23","update_time":"2016-06-08 15:15:23"},{"record_id":"1373569","host_id":"1155577","host":"orig.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:26","update_time":"2016-06-08 15:15:26"},{"record_id":"1373571","host_id":"1155579","host":"orig.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:27","update_time":"2016-06-08 15:15:27"},{"record_id":"1373561","host_id":"1155569","host":"random.fqdntest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:15","update_time":"2016-06-08 15:15:15"},{"record_id":"1373563","host_id":"1155571","host":"random.fulltest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:17","update_time":"2016-06-08 15:15:17"},{"record_id":"1373565","host_id":"1155573","host":"random.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:19","update_time":"2016-06-08 15:15:19"},{"record_id":"1373547","host_id":"1155555","host":"_acme-challenge.fqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:02","update_time":"2016-06-08 15:15:02"},{"record_id":"1373549","host_id":"1155557","host":"_acme-challenge.full","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:04","update_time":"2016-06-08 15:15:04"},{"record_id":"1373551","host_id":"1155559","host":"_acme-challenge.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:07","update_time":"2016-06-08 15:15:07"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['4400']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:15:56 GMT']
+      server: [Tengine]
+      transfer-encoding: [chunked]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_list_records_with_full_name_filter_should_return_record.yaml b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_list_records_with_full_name_filter_should_return_record.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_list_records_with_full_name_filter_should_return_record.yaml
@@ -0,0 +1,97 @@
+interactions:
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [7782b70959561a51f87407089f4c13c1]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:14:38 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/domain
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"1","data":[{"id":"89415","domain":"capsulecd.com.","status":"ok","level":"3","take_over_status":"no","create_time":"2016-06-08
+        14:49:10","update_time":"2016-06-08 14:57:48","ttl":"600"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['226']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:14:41 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=382a849185e07d64222d11f0e8ae790b; expires=Wed,
+          08-Jun-2016 17:14:41 GMT; path=/']
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"format": "json", "login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53",
+      "value": "challengetoken", "line_id": 1, "host": "random.fulltest", "type":
+      "TXT", "domain_id": "89415"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [2ba7f9579a2bad4444d88e1d66ece8b7]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:15:15 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['191']
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://www.cloudxns.net/api2/record
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","record_id":[1373563]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['52']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:15:17 GMT']
+      server: [Tengine]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [b87331b5563a095bebaf2fd62b565a89]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:15:57 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/record/89415?host_id=0&row_num=2000&offset=0
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"15","offset":0,"row_num":2000,"data":[{"record_id":"1373553","host_id":"1155561","host":"delete.testfilt","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:09","update_time":"2016-06-08 15:15:09"},{"record_id":"1373555","host_id":"1155563","host":"delete.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:11","update_time":"2016-06-08 15:15:11"},{"record_id":"1373557","host_id":"1155565","host":"delete.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:12","update_time":"2016-06-08 15:15:12"},{"record_id":"1373559","host_id":"1155567","host":"delete.testid","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:13","update_time":"2016-06-08 15:15:14"},{"record_id":"1373545","host_id":"1155553","host":"docs","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"docs.example.com.","ttl":"600","type":"CNAME","status":"ok","create_time":"2016-06-08
+        15:15:00","update_time":"2016-06-08 15:15:00"},{"record_id":"1373543","host_id":"1155551","host":"localhost","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"127.0.0.1","ttl":"600","type":"A","status":"ok","create_time":"2016-06-08
+        15:14:58","update_time":"2016-06-08 15:14:58"},{"record_id":"1373567","host_id":"1155575","host":"orig.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:23","update_time":"2016-06-08 15:15:23"},{"record_id":"1373569","host_id":"1155577","host":"orig.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:26","update_time":"2016-06-08 15:15:26"},{"record_id":"1373571","host_id":"1155579","host":"orig.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:27","update_time":"2016-06-08 15:15:27"},{"record_id":"1373561","host_id":"1155569","host":"random.fqdntest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:15","update_time":"2016-06-08 15:15:15"},{"record_id":"1373563","host_id":"1155571","host":"random.fulltest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:17","update_time":"2016-06-08 15:15:17"},{"record_id":"1373565","host_id":"1155573","host":"random.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:19","update_time":"2016-06-08 15:15:19"},{"record_id":"1373547","host_id":"1155555","host":"_acme-challenge.fqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:02","update_time":"2016-06-08 15:15:02"},{"record_id":"1373549","host_id":"1155557","host":"_acme-challenge.full","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:04","update_time":"2016-06-08 15:15:04"},{"record_id":"1373551","host_id":"1155559","host":"_acme-challenge.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:07","update_time":"2016-06-08 15:15:07"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['4400']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:15:58 GMT']
+      server: [Tengine]
+      transfer-encoding: [chunked]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_list_records_with_name_filter_should_return_record.yaml b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_list_records_with_name_filter_should_return_record.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_list_records_with_name_filter_should_return_record.yaml
@@ -0,0 +1,97 @@
+interactions:
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [23a5356d8bee100b3e1c2608c6ba46d7]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:14:41 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/domain
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"1","data":[{"id":"89415","domain":"capsulecd.com.","status":"ok","level":"3","take_over_status":"no","create_time":"2016-06-08
+        14:49:10","update_time":"2016-06-08 14:57:48","ttl":"600"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['226']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:14:43 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=76d926206bcb5ba2441fb9bebd53f3e5; expires=Wed,
+          08-Jun-2016 17:14:43 GMT; path=/']
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"format": "json", "login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53",
+      "value": "challengetoken", "line_id": 1, "host": "random.test", "type": "TXT",
+      "domain_id": "89415"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [c1e066ccc5f1863d0ed8caa4384785ef]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:15:17 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['187']
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://www.cloudxns.net/api2/record
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","record_id":[1373565]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['52']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:15:20 GMT']
+      server: [Tengine]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [a56bd4c09ab5bb5b540c0d44dfef66a5]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:15:59 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/record/89415?host_id=0&row_num=2000&offset=0
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"15","offset":0,"row_num":2000,"data":[{"record_id":"1373553","host_id":"1155561","host":"delete.testfilt","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:09","update_time":"2016-06-08 15:15:09"},{"record_id":"1373555","host_id":"1155563","host":"delete.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:11","update_time":"2016-06-08 15:15:11"},{"record_id":"1373557","host_id":"1155565","host":"delete.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:12","update_time":"2016-06-08 15:15:12"},{"record_id":"1373559","host_id":"1155567","host":"delete.testid","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:13","update_time":"2016-06-08 15:15:14"},{"record_id":"1373545","host_id":"1155553","host":"docs","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"docs.example.com.","ttl":"600","type":"CNAME","status":"ok","create_time":"2016-06-08
+        15:15:00","update_time":"2016-06-08 15:15:00"},{"record_id":"1373543","host_id":"1155551","host":"localhost","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"127.0.0.1","ttl":"600","type":"A","status":"ok","create_time":"2016-06-08
+        15:14:58","update_time":"2016-06-08 15:14:58"},{"record_id":"1373567","host_id":"1155575","host":"orig.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:23","update_time":"2016-06-08 15:15:23"},{"record_id":"1373569","host_id":"1155577","host":"orig.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:26","update_time":"2016-06-08 15:15:26"},{"record_id":"1373571","host_id":"1155579","host":"orig.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:27","update_time":"2016-06-08 15:15:27"},{"record_id":"1373561","host_id":"1155569","host":"random.fqdntest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:15","update_time":"2016-06-08 15:15:15"},{"record_id":"1373563","host_id":"1155571","host":"random.fulltest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:17","update_time":"2016-06-08 15:15:17"},{"record_id":"1373565","host_id":"1155573","host":"random.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:19","update_time":"2016-06-08 15:15:19"},{"record_id":"1373547","host_id":"1155555","host":"_acme-challenge.fqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:02","update_time":"2016-06-08 15:15:02"},{"record_id":"1373549","host_id":"1155557","host":"_acme-challenge.full","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:04","update_time":"2016-06-08 15:15:04"},{"record_id":"1373551","host_id":"1155559","host":"_acme-challenge.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:07","update_time":"2016-06-08 15:15:07"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['4400']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:16:00 GMT']
+      server: [Tengine]
+      transfer-encoding: [chunked]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_list_records_with_no_arguments_should_list_all.yaml b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_list_records_with_no_arguments_should_list_all.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_list_records_with_no_arguments_should_list_all.yaml
@@ -0,0 +1,68 @@
+interactions:
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [733906b94af7bd6092c29ebfd5a12121]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:14:43 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/domain
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"1","data":[{"id":"89415","domain":"capsulecd.com.","status":"ok","level":"3","take_over_status":"no","create_time":"2016-06-08
+        14:49:10","update_time":"2016-06-08 14:57:48","ttl":"600"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['226']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:14:44 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=8e8d03fb330a6dcc15e0fbb4d8766c3d; expires=Wed,
+          08-Jun-2016 17:14:44 GMT; path=/']
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [88be11ef723f9030b4d6e4ab0177645e]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:15:20 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/record/89415?host_id=0&row_num=2000&offset=0
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"12","offset":0,"row_num":2000,"data":[{"record_id":"1373553","host_id":"1155561","host":"delete.testfilt","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:09","update_time":"2016-06-08 15:15:09"},{"record_id":"1373555","host_id":"1155563","host":"delete.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:11","update_time":"2016-06-08 15:15:11"},{"record_id":"1373557","host_id":"1155565","host":"delete.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:12","update_time":"2016-06-08 15:15:12"},{"record_id":"1373559","host_id":"1155567","host":"delete.testid","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:13","update_time":"2016-06-08 15:15:14"},{"record_id":"1373545","host_id":"1155553","host":"docs","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"docs.example.com.","ttl":"600","type":"CNAME","status":"ok","create_time":"2016-06-08
+        15:15:00","update_time":"2016-06-08 15:15:00"},{"record_id":"1373543","host_id":"1155551","host":"localhost","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"127.0.0.1","ttl":"600","type":"A","status":"ok","create_time":"2016-06-08
+        15:14:58","update_time":"2016-06-08 15:14:58"},{"record_id":"1373561","host_id":"1155569","host":"random.fqdntest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:15","update_time":"2016-06-08 15:15:15"},{"record_id":"1373563","host_id":"1155571","host":"random.fulltest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:17","update_time":"2016-06-08 15:15:17"},{"record_id":"1373565","host_id":"1155573","host":"random.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:19","update_time":"2016-06-08 15:15:19"},{"record_id":"1373547","host_id":"1155555","host":"_acme-challenge.fqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:02","update_time":"2016-06-08 15:15:02"},{"record_id":"1373549","host_id":"1155557","host":"_acme-challenge.full","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:04","update_time":"2016-06-08 15:15:04"},{"record_id":"1373551","host_id":"1155559","host":"_acme-challenge.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:07","update_time":"2016-06-08 15:15:07"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['3540']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:15:21 GMT']
+      server: [Tengine]
+      transfer-encoding: [chunked]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_update_record_should_modify_record.yaml b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_update_record_should_modify_record.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_update_record_should_modify_record.yaml
@@ -0,0 +1,125 @@
+interactions:
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [343e92a7a1f613616bc949b2d1793df4]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:14:44 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/domain
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"1","data":[{"id":"89415","domain":"capsulecd.com.","status":"ok","level":"3","take_over_status":"no","create_time":"2016-06-08
+        14:49:10","update_time":"2016-06-08 14:57:48","ttl":"600"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['226']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:14:49 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=808dccd7630ec3487a944bc7e932d21e; expires=Wed,
+          08-Jun-2016 17:14:49 GMT; path=/']
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"format": "json", "login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53",
+      "value": "challengetoken", "line_id": 1, "host": "orig.test", "type": "TXT",
+      "domain_id": "89415"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [adcc578dd9158bd27a788127da918dbd]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:15:22 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['185']
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://www.cloudxns.net/api2/record
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","record_id":[1373567]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['52']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:15:24 GMT']
+      server: [Tengine]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [a318a83ed1c55bbe03658c14d6a4b4eb]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:16:00 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/record/89415?host_id=0&row_num=2000&offset=0
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"15","offset":0,"row_num":2000,"data":[{"record_id":"1373553","host_id":"1155561","host":"delete.testfilt","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:09","update_time":"2016-06-08 15:15:09"},{"record_id":"1373555","host_id":"1155563","host":"delete.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:11","update_time":"2016-06-08 15:15:11"},{"record_id":"1373557","host_id":"1155565","host":"delete.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:12","update_time":"2016-06-08 15:15:12"},{"record_id":"1373559","host_id":"1155567","host":"delete.testid","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:13","update_time":"2016-06-08 15:15:14"},{"record_id":"1373545","host_id":"1155553","host":"docs","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"docs.example.com.","ttl":"600","type":"CNAME","status":"ok","create_time":"2016-06-08
+        15:15:00","update_time":"2016-06-08 15:15:00"},{"record_id":"1373543","host_id":"1155551","host":"localhost","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"127.0.0.1","ttl":"600","type":"A","status":"ok","create_time":"2016-06-08
+        15:14:58","update_time":"2016-06-08 15:14:58"},{"record_id":"1373567","host_id":"1155575","host":"orig.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:23","update_time":"2016-06-08 15:15:23"},{"record_id":"1373569","host_id":"1155577","host":"orig.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:26","update_time":"2016-06-08 15:15:26"},{"record_id":"1373571","host_id":"1155579","host":"orig.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:27","update_time":"2016-06-08 15:15:27"},{"record_id":"1373561","host_id":"1155569","host":"random.fqdntest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:15","update_time":"2016-06-08 15:15:15"},{"record_id":"1373563","host_id":"1155571","host":"random.fulltest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:17","update_time":"2016-06-08 15:15:17"},{"record_id":"1373565","host_id":"1155573","host":"random.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:19","update_time":"2016-06-08 15:15:19"},{"record_id":"1373547","host_id":"1155555","host":"_acme-challenge.fqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:02","update_time":"2016-06-08 15:15:02"},{"record_id":"1373549","host_id":"1155557","host":"_acme-challenge.full","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:04","update_time":"2016-06-08 15:15:04"},{"record_id":"1373551","host_id":"1155559","host":"_acme-challenge.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:07","update_time":"2016-06-08 15:15:07"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['4400']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:16:02 GMT']
+      server: [Tengine]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"format": "json", "login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53",
+      "value": "challengetoken", "host": "updated.test", "type": "TXT", "domain_id":
+      "89415"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [4804a55829ad6c163716e6a8a686f8fb]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:16:22 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['174']
+      User-Agent: [python-requests/2.9.1]
+    method: PUT
+    uri: https://www.cloudxns.net/api2/record/1373567
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","data":{"id":1373567,"domain_name":"updated.test.capsulecd.com.","value":"challengetoken"}}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['121']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:16:23 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=072397cb32c665613d12649d816914f9; expires=Wed,
+          08-Jun-2016 17:16:23 GMT; path=/']
+      transfer-encoding: [chunked]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_update_record_with_fqdn_name_should_modify_record.yaml b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_update_record_with_fqdn_name_should_modify_record.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_update_record_with_fqdn_name_should_modify_record.yaml
@@ -0,0 +1,125 @@
+interactions:
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [fec095c5645e64cdaf3c9a01526f0ce6]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:14:49 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/domain
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"1","data":[{"id":"89415","domain":"capsulecd.com.","status":"ok","level":"3","take_over_status":"no","create_time":"2016-06-08
+        14:49:10","update_time":"2016-06-08 14:57:48","ttl":"600"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['226']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:14:50 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=bfc3cc5c2a68e0a3568e1046f9232dc1; expires=Wed,
+          08-Jun-2016 17:14:50 GMT; path=/']
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"format": "json", "login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53",
+      "value": "challengetoken", "line_id": 1, "host": "orig.testfqdn", "type": "TXT",
+      "domain_id": "89415"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [992ed299b0a3ce635505d99ef2b794c7]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:15:24 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['189']
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://www.cloudxns.net/api2/record
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","record_id":[1373569]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['52']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:15:26 GMT']
+      server: [Tengine]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [027b78ecf44289035473a8aeecf87d9c]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:16:02 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/record/89415?host_id=0&row_num=2000&offset=0
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"15","offset":0,"row_num":2000,"data":[{"record_id":"1373553","host_id":"1155561","host":"delete.testfilt","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:09","update_time":"2016-06-08 15:15:09"},{"record_id":"1373555","host_id":"1155563","host":"delete.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:11","update_time":"2016-06-08 15:15:11"},{"record_id":"1373557","host_id":"1155565","host":"delete.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:12","update_time":"2016-06-08 15:15:12"},{"record_id":"1373559","host_id":"1155567","host":"delete.testid","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:13","update_time":"2016-06-08 15:15:14"},{"record_id":"1373545","host_id":"1155553","host":"docs","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"docs.example.com.","ttl":"600","type":"CNAME","status":"ok","create_time":"2016-06-08
+        15:15:00","update_time":"2016-06-08 15:15:00"},{"record_id":"1373543","host_id":"1155551","host":"localhost","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"127.0.0.1","ttl":"600","type":"A","status":"ok","create_time":"2016-06-08
+        15:14:58","update_time":"2016-06-08 15:14:58"},{"record_id":"1373567","host_id":"1155575","host":"orig.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:23","update_time":"2016-06-08 15:15:23"},{"record_id":"1373569","host_id":"1155577","host":"orig.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:26","update_time":"2016-06-08 15:15:26"},{"record_id":"1373571","host_id":"1155579","host":"orig.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:27","update_time":"2016-06-08 15:15:27"},{"record_id":"1373561","host_id":"1155569","host":"random.fqdntest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:15","update_time":"2016-06-08 15:15:15"},{"record_id":"1373563","host_id":"1155571","host":"random.fulltest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:17","update_time":"2016-06-08 15:15:17"},{"record_id":"1373565","host_id":"1155573","host":"random.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:19","update_time":"2016-06-08 15:15:19"},{"record_id":"1373547","host_id":"1155555","host":"_acme-challenge.fqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:02","update_time":"2016-06-08 15:15:02"},{"record_id":"1373549","host_id":"1155557","host":"_acme-challenge.full","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:04","update_time":"2016-06-08 15:15:04"},{"record_id":"1373551","host_id":"1155559","host":"_acme-challenge.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:07","update_time":"2016-06-08 15:15:07"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['4400']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:16:04 GMT']
+      server: [Tengine]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"format": "json", "login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53",
+      "value": "challengetoken", "host": "updated.testfqdn", "type": "TXT", "domain_id":
+      "89415"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [75b289dc27dad5b73ffe3057d759278a]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:16:24 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['178']
+      User-Agent: [python-requests/2.9.1]
+    method: PUT
+    uri: https://www.cloudxns.net/api2/record/1373569
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","data":{"id":1373569,"domain_name":"updated.testfqdn.capsulecd.com.","value":"challengetoken"}}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['125']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:16:25 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=b73c4cc40769281865351cab77cdd6a3; expires=Wed,
+          08-Jun-2016 17:16:25 GMT; path=/']
+      transfer-encoding: [chunked]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_update_record_with_full_name_should_modify_record.yaml b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_update_record_with_full_name_should_modify_record.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/cloudxns/IntegrationTests/test_Provider_when_calling_update_record_with_full_name_should_modify_record.yaml
@@ -0,0 +1,125 @@
+interactions:
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [fe2a6a343c20f1a72ca97e832fb9a7f2]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:14:50 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/domain
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"1","data":[{"id":"89415","domain":"capsulecd.com.","status":"ok","level":"3","take_over_status":"no","create_time":"2016-06-08
+        14:49:10","update_time":"2016-06-08 14:57:48","ttl":"600"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['226']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:14:52 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=60606b9fd146e34bcc0ac087e6f974c6; expires=Wed,
+          08-Jun-2016 17:14:52 GMT; path=/']
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"format": "json", "login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53",
+      "value": "challengetoken", "line_id": 1, "host": "orig.testfull", "type": "TXT",
+      "domain_id": "89415"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [8919ea50f797c832fbcb618021e8d7fb]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:15:26 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['189']
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://www.cloudxns.net/api2/record
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","record_id":[1373571]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['52']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:15:28 GMT']
+      server: [Tengine]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53", "format":
+      "json"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [d0ef5162672a188f328f58fcec749ae0]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:16:04 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['86']
+      User-Agent: [python-requests/2.9.1]
+    method: GET
+    uri: https://www.cloudxns.net/api2/record/89415?host_id=0&row_num=2000&offset=0
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","total":"15","offset":0,"row_num":2000,"data":[{"record_id":"1373553","host_id":"1155561","host":"delete.testfilt","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:09","update_time":"2016-06-08 15:15:09"},{"record_id":"1373555","host_id":"1155563","host":"delete.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:11","update_time":"2016-06-08 15:15:11"},{"record_id":"1373557","host_id":"1155565","host":"delete.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:12","update_time":"2016-06-08 15:15:12"},{"record_id":"1373559","host_id":"1155567","host":"delete.testid","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:13","update_time":"2016-06-08 15:15:14"},{"record_id":"1373545","host_id":"1155553","host":"docs","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"docs.example.com.","ttl":"600","type":"CNAME","status":"ok","create_time":"2016-06-08
+        15:15:00","update_time":"2016-06-08 15:15:00"},{"record_id":"1373543","host_id":"1155551","host":"localhost","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"127.0.0.1","ttl":"600","type":"A","status":"ok","create_time":"2016-06-08
+        15:14:58","update_time":"2016-06-08 15:14:58"},{"record_id":"1373567","host_id":"1155575","host":"orig.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:23","update_time":"2016-06-08 15:15:23"},{"record_id":"1373569","host_id":"1155577","host":"orig.testfqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:26","update_time":"2016-06-08 15:15:26"},{"record_id":"1373571","host_id":"1155579","host":"orig.testfull","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:27","update_time":"2016-06-08 15:15:27"},{"record_id":"1373561","host_id":"1155569","host":"random.fqdntest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:15","update_time":"2016-06-08 15:15:15"},{"record_id":"1373563","host_id":"1155571","host":"random.fulltest","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:17","update_time":"2016-06-08 15:15:17"},{"record_id":"1373565","host_id":"1155573","host":"random.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:19","update_time":"2016-06-08 15:15:19"},{"record_id":"1373547","host_id":"1155555","host":"_acme-challenge.fqdn","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:02","update_time":"2016-06-08 15:15:02"},{"record_id":"1373549","host_id":"1155557","host":"_acme-challenge.full","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:04","update_time":"2016-06-08 15:15:04"},{"record_id":"1373551","host_id":"1155559","host":"_acme-challenge.test","line_id":"1","line_zh":"\u5168\u7f51\u9ed8\u8ba4","line_en":"DEFAULT","mx":null,"value":"\"challengetoken\"","ttl":"600","type":"TXT","status":"ok","create_time":"2016-06-08
+        15:15:07","update_time":"2016-06-08 15:15:07"}]}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['4400']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:16:06 GMT']
+      server: [Tengine]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+- request:
+    body: '{"format": "json", "login_token": "c34e4c5a884101c4c2be3737af8d3d08,81d216fcd15eeb53",
+      "value": "challengetoken", "host": "updated.testfull", "type": "TXT", "domain_id":
+      "89415"}'
+    headers:
+      API-FORMAT: [json]
+      API-HMAC: [7eb8787006981d07c07cc87d01044fad]
+      API-KEY: [c34e4c5a884101c4c2be3737af8d3d08]
+      API-REQUEST-DATE: ['Wed Jun 08 00:16:25 2016']
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['178']
+      User-Agent: [python-requests/2.9.1]
+    method: PUT
+    uri: https://www.cloudxns.net/api2/record/1373571
+  response:
+    body: {string: !!python/unicode '{"code":1,"message":"success","data":{"id":1373571,"domain_name":"updated.testfull.capsulecd.com.","value":"challengetoken"}}'}
+    headers:
+      connection: [keep-alive]
+      content-length: ['125']
+      content-type: [text/html; charset=utf-8]
+      date: ['Wed, 08 Jun 2016 07:16:28 GMT']
+      server: [Tengine]
+      set-cookie: ['CloudXNS_TOKEN=a7cf5a7b84ff010191b3b92593306675; expires=Wed,
+          08-Jun-2016 17:16:28 GMT; path=/']
+      transfer-encoding: [chunked]
+      vary: [Accept-Encoding]
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/providers/test_cloudxns.py b/tests/providers/test_cloudxns.py
new file mode 100644
--- /dev/null
+++ b/tests/providers/test_cloudxns.py
@@ -0,0 +1,16 @@
+# Test for one implementation of the interface
+from lexicon.providers.cloudxns import Provider
+from integration_tests import IntegrationTests
+from unittest import TestCase
+import pytest
+
+# Hook into testing framework by inheriting unittest.TestCase and reuse
+# the tests which *each and every* implementation of the interface must
+# pass, by inheritance from define_tests.TheTests
+class DnsParkProviderTests(TestCase, IntegrationTests):
+
+    Provider = Provider
+    provider_name = 'cloudxns'
+    domain = 'capsulecd.com'
+    def _filter_post_data_parameters(self):
+        return ['login_token']