Repository: AnalogJ/lexicon

Issue:
DNSPod Provider
DNSPod is one of the biggest DNS provider in China.
Here I wrote a DNSPod adapter.

and, I found lexicon can't work now. I did some fix in parsing environment variables.

notice, there is a --auth-id that not "standardize".
DNSPod API auth with an id and Token. this id is given one per token, it's not login username. so I use --auth-id to avoid ambiguity.
but if you prefer standardized way, it's also okey to rename it to --auth-username, since DNSPod will not auth true username when using API access.



Discussion:
Hi.

I'm an automated pull request bot named [CapsuleCD](http://www.github.com/AnalogJ/capsulecd). I handle testing, versioning and package releases for this project. 
- If you're the owner of this repo, you can click the button below to kick off the CapsuleCD build pipeline and create an automated release.'
- If not, don't worry, someone will be by shortly to check on your pull request. 

[![CapsuleCD](https://img.shields.io/badge/CapsuleCD-%E2%96%BA-blue.svg)](http://www.capsulecd.com/#!/deploy/github/AnalogJ/lexicon/pullrequests/34)

---

If you're interested in learning more about [CapsuleCD](http://www.github.com/AnalogJ/capsulecd), or adding it to your project, you can check it out [here](http://www.github.com/AnalogJ/capsulecd)


Resolving patch:
diff --git a/lexicon/providers/dnspod.py b/lexicon/providers/dnspod.py
new file mode 100644
--- /dev/null
+++ b/lexicon/providers/dnspod.py
@@ -0,0 +1,130 @@
+# -*- coding: utf-8 -*-
+from base import Provider as BaseProvider
+import requests
+import json
+
+def ProviderParser(subparser):
+    subparser.add_argument("--auth-username", help="specify api id used to authenticate")
+    subparser.add_argument("--auth-token", help="specify token 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://dnsapi.cn'
+
+    def authenticate(self):
+
+        payload = self._post('/Domain.Info', {'domain':self.options['domain']})
+
+        if payload['status']['code'] != '1':
+            raise StandardError(payload['status']['message'])
+
+        self.domain_id = payload['domain']['id']
+
+
+    # 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,
+            'sub_domain': self._relative_name(name),
+            'record_type': type,
+            'record_line': '默认',
+            'value': content
+        }
+
+        payload = self._post('/Record.Create', record)
+
+        if payload['status']['code'] not in ['1', '31']:
+            raise StandardError(payload['status']['message'])
+
+        print 'create_record: {0}'.format(payload['status']['code'] == '1')
+        return payload['status']['code'] == '1'
+
+    # 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._post('/Record.List', {'domain':self.options['domain']})
+        print payload
+        records = []
+        for record in payload['records']:
+            processed_record = {
+                'type': record['type'],
+                'name': self._full_name(record['name']),
+                'ttl': record['ttl'],
+                'content': record['value'],
+                #this id is useless unless your doing record linking. Lets return the original record identifier.
+                'id': record['id'] #
+            }
+            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):
+
+        data = {
+            'domain_id': self.domain_id,
+            'record_id': identifier,
+            'sub_domain': self._relative_name(name),
+            'record_type': type,
+            'record_line': '默认',
+            'value': content
+        }
+        print data
+        payload = self._post('/Record.Modify', data)
+        print payload
+        if payload['status']['code'] != '1':
+            raise StandardError(payload['status']['message'])
+
+        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)
+            print records
+            if len(records) == 1:
+                identifier = records[0]['id']
+            else:
+                raise StandardError('Record identifier could not be found.')
+        payload = self._post('/Record.Remove', {'domain_id': self.domain_id, 'record_id': identifier})
+
+        if payload['status']['code'] != '1':
+            raise StandardError(payload['status']['message'])
+
+        # 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 is None:
+            query_params = {}
+        default_headers = {}
+        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/dnspod/IntegrationTests/test_Provider_authenticate.yaml b/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_authenticate.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_authenticate.yaml
@@ -0,0 +1,33 @@
+interactions:
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Domain.Info
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:55:53"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","grade_title":"\u65b0\u514d\u8d39\u5957\u9910","status":"enable","ext_status":"dnserror","records":"2","group_id":"1","is_mark":"no","remark":false,"is_vip":"no","searchengine_push":"yes","user_id":"1446297","created_on":"2016-05-11
+        02:35:23","updated_on":"2016-05-11 02:35:23","ttl":"600","cname_speedup":"disable","owner":"lexicon@mailinator.com"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['542']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:55:53 GMT']
+      etag: [W/"d5ec33841b9f61ef05564f5fb1b2b3b0"]
+      expires: ['Tue, 10 May 2016 20:55:53 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=ah9o7o0k2n76dur85ggoph81s0; path=/; secure; HttpOnly,
+        '_xsrf=a840c455fb5ffec2ce2a19c19d846b69%7C1462906553; expires=Tue, 17-May-2016
+          18:55:53 GMT; Max-Age=604800; path=/']
+      transfer-encoding: [chunked]
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_authenticate_with_unmanaged_domain_should_fail.yaml b/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_authenticate_with_unmanaged_domain_should_fail.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_authenticate_with_unmanaged_domain_should_fail.yaml
@@ -0,0 +1,31 @@
+interactions:
+- request:
+    body: domain=thisisadomainidonotown.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['98']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Domain.Info
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"13","message":"Domain is not
+        exists","created_at":"2016-05-11 02:55:55"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['92']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:55:55 GMT']
+      expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=6b5u0in5neufseuifqfklepc84; path=/; secure; HttpOnly,
+        '_xsrf=65e6c6f478896c8f4e474ca5078bc8b2%7C1462906555; expires=Tue, 17-May-2016
+          18:55:55 GMT; Max-Age=604800; path=/']
+      transfer-encoding: [chunked]
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_create_record_for_A_with_valid_name_and_content.yaml b/tests/fixtures/cassettes/dnspod/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/dnspod/IntegrationTests/test_Provider_when_calling_create_record_for_A_with_valid_name_and_content.yaml
@@ -0,0 +1,62 @@
+interactions:
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Domain.Info
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:56:56"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","grade_title":"\u65b0\u514d\u8d39\u5957\u9910","status":"enable","ext_status":"dnserror","records":"2","group_id":"1","is_mark":"no","remark":false,"is_vip":"no","searchengine_push":"yes","user_id":"1446297","created_on":"2016-05-11
+        02:35:23","updated_on":"2016-05-11 02:35:23","ttl":"600","cname_speedup":"disable","owner":"lexicon@mailinator.com"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['542']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:56:56 GMT']
+      etag: [W/"0a8c4c35f8394ba137cc45fddc1fcd66"]
+      expires: ['Tue, 10 May 2016 20:56:56 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=1je3novkv86plsue16e01pe135; path=/; secure; HttpOnly,
+        '_xsrf=ead1694c6e7afa6e1a1fba1d4730ccb4%7C1462906616; expires=Tue, 17-May-2016
+          18:56:56 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_line=%E9%BB%98%E8%AE%A4&format=json&value=127.0.0.1&record_type=A&sub_domain=localhost&domain_id=38280687
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['165']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Create
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:57:15"},"record":{"id":"189592919","name":"localhost","status":"enabled","weight":null}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['178']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:57:15 GMT']
+      etag: [W/"87e3b1f49d0d2b7f0871dfd5feedf840"]
+      expires: ['Tue, 10 May 2016 20:57:15 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=k63vpugmojpke2mfr1ko4pv083; path=/; secure; HttpOnly,
+        '_xsrf=60942dbea5e21165feae8f105b164ed7%7C1462906635; expires=Tue, 17-May-2016
+          18:57:15 GMT; Max-Age=604800; path=/']
+      transfer-encoding: [chunked]
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_create_record_for_CNAME_with_valid_name_and_content.yaml b/tests/fixtures/cassettes/dnspod/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/dnspod/IntegrationTests/test_Provider_when_calling_create_record_for_CNAME_with_valid_name_and_content.yaml
@@ -0,0 +1,62 @@
+interactions:
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Domain.Info
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:56:57"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","grade_title":"\u65b0\u514d\u8d39\u5957\u9910","status":"enable","ext_status":"dnserror","records":"2","group_id":"1","is_mark":"no","remark":false,"is_vip":"no","searchengine_push":"yes","user_id":"1446297","created_on":"2016-05-11
+        02:35:23","updated_on":"2016-05-11 02:35:23","ttl":"600","cname_speedup":"disable","owner":"lexicon@mailinator.com"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['542']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:56:57 GMT']
+      etag: [W/"61e9e2036d96b458f1f0e094561b34fa"]
+      expires: ['Tue, 10 May 2016 20:56:57 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=vkkep8he3n5q8pud7ijf2hebq6; path=/; secure; HttpOnly,
+        '_xsrf=828cb15bdb9689e5430ac926c2505973%7C1462906617; expires=Tue, 17-May-2016
+          18:56:57 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_line=%E9%BB%98%E8%AE%A4&format=json&value=docs.example.com&record_type=CNAME&sub_domain=docs&domain_id=38280687
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['171']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Create
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:57:21"},"record":{"id":"189592932","name":"docs","status":"enabled","weight":null}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['173']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:57:21 GMT']
+      etag: [W/"7aeb77c78df9bd1b0bb480acbba1f532"]
+      expires: ['Tue, 10 May 2016 20:57:21 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=kqvg41cigeosbsaaiatrg2qv50; path=/; secure; HttpOnly,
+        '_xsrf=b634a0101b5b626d6da58b473ce8ae3e%7C1462906641; expires=Tue, 17-May-2016
+          18:57:21 GMT; Max-Age=604800; path=/']
+      transfer-encoding: [chunked]
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_create_record_for_TXT_with_fqdn_name_and_content.yaml b/tests/fixtures/cassettes/dnspod/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/dnspod/IntegrationTests/test_Provider_when_calling_create_record_for_TXT_with_fqdn_name_and_content.yaml
@@ -0,0 +1,62 @@
+interactions:
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Domain.Info
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:57:01"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","grade_title":"\u65b0\u514d\u8d39\u5957\u9910","status":"enable","ext_status":"dnserror","records":"2","group_id":"1","is_mark":"no","remark":false,"is_vip":"no","searchengine_push":"yes","user_id":"1446297","created_on":"2016-05-11
+        02:35:23","updated_on":"2016-05-11 02:35:23","ttl":"600","cname_speedup":"disable","owner":"lexicon@mailinator.com"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['542']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:57:01 GMT']
+      etag: [W/"eca2f09fc69f27caafefd65548156669"]
+      expires: ['Tue, 10 May 2016 20:57:01 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=eg07a1r74lbvik1g0tmptdpen2; path=/; secure; HttpOnly,
+        '_xsrf=786ea11e46c66be47f0dad6fca020f1f%7C1462906621; expires=Tue, 17-May-2016
+          18:57:01 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_line=%E9%BB%98%E8%AE%A4&format=json&value=challengetoken&record_type=TXT&sub_domain=_acme-challenge.fqdn&domain_id=38280687
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['183']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Create
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:57:22"},"record":{"id":"189592939","name":"_acme-challenge.fqdn","status":"enabled","weight":null}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['189']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:57:22 GMT']
+      etag: [W/"ae21f11b379c5cf840276fc4b46a273b"]
+      expires: ['Tue, 10 May 2016 20:57:22 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=073ve7rhvbhv3is0g5skeh6ku4; path=/; secure; HttpOnly,
+        '_xsrf=021e58e7c35fda3a4b6aee9a9d40ab99%7C1462906642; expires=Tue, 17-May-2016
+          18:57:22 GMT; Max-Age=604800; path=/']
+      transfer-encoding: [chunked]
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_create_record_for_TXT_with_full_name_and_content.yaml b/tests/fixtures/cassettes/dnspod/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/dnspod/IntegrationTests/test_Provider_when_calling_create_record_for_TXT_with_full_name_and_content.yaml
@@ -0,0 +1,62 @@
+interactions:
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Domain.Info
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:57:03"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","grade_title":"\u65b0\u514d\u8d39\u5957\u9910","status":"enable","ext_status":"dnserror","records":"2","group_id":"1","is_mark":"no","remark":false,"is_vip":"no","searchengine_push":"yes","user_id":"1446297","created_on":"2016-05-11
+        02:35:23","updated_on":"2016-05-11 02:35:23","ttl":"600","cname_speedup":"disable","owner":"lexicon@mailinator.com"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['542']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:57:03 GMT']
+      etag: [W/"28c8e085fe9542907818a4e2e500be5c"]
+      expires: ['Tue, 10 May 2016 20:57:03 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=86ldetq8h0av0po3h19c7p3dh0; path=/; secure; HttpOnly,
+        '_xsrf=ae052c94232c037d34de214e8fb1ec77%7C1462906623; expires=Tue, 17-May-2016
+          18:57:03 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_line=%E9%BB%98%E8%AE%A4&format=json&value=challengetoken&record_type=TXT&sub_domain=_acme-challenge.full&domain_id=38280687
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['183']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Create
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:57:23"},"record":{"id":"189592942","name":"_acme-challenge.full","status":"enabled","weight":null}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['189']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:57:24 GMT']
+      etag: [W/"f233525200dd7c84022d2dcd2f33e5b1"]
+      expires: ['Tue, 10 May 2016 20:57:24 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=q825mvgq6suu66k1uldmn1hcb4; path=/; secure; HttpOnly,
+        '_xsrf=8d8c091b6b116bc3e39fd09826d000b4%7C1462906643; expires=Tue, 17-May-2016
+          18:57:23 GMT; Max-Age=604800; path=/']
+      transfer-encoding: [chunked]
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_create_record_for_TXT_with_valid_name_and_content.yaml b/tests/fixtures/cassettes/dnspod/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/dnspod/IntegrationTests/test_Provider_when_calling_create_record_for_TXT_with_valid_name_and_content.yaml
@@ -0,0 +1,62 @@
+interactions:
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Domain.Info
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:57:05"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","grade_title":"\u65b0\u514d\u8d39\u5957\u9910","status":"enable","ext_status":"dnserror","records":"2","group_id":"1","is_mark":"no","remark":false,"is_vip":"no","searchengine_push":"yes","user_id":"1446297","created_on":"2016-05-11
+        02:35:23","updated_on":"2016-05-11 02:35:23","ttl":"600","cname_speedup":"disable","owner":"lexicon@mailinator.com"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['542']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:57:05 GMT']
+      etag: [W/"e3218394613f4b47e51d975dfad0855e"]
+      expires: ['Tue, 10 May 2016 20:57:05 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=1lkehae9j9osrl5gc9t4g9dqg5; path=/; secure; HttpOnly,
+        '_xsrf=4e564384c1c04ff35071fc5e9a68d095%7C1462906625; expires=Tue, 17-May-2016
+          18:57:05 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_line=%E9%BB%98%E8%AE%A4&format=json&value=challengetoken&record_type=TXT&sub_domain=_acme-challenge.test&domain_id=38280687
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['183']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Create
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:57:26"},"record":{"id":"189592945","name":"_acme-challenge.test","status":"enabled","weight":null}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['189']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:57:26 GMT']
+      etag: [W/"5183c1b17d96a46ce69519542fa1775f"]
+      expires: ['Tue, 10 May 2016 20:57:26 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=rt3iptflbt4nkinpe0nfa91ao3; path=/; secure; HttpOnly,
+        '_xsrf=b0829771d11e63a0e1c0eef8171840f3%7C1462906646; expires=Tue, 17-May-2016
+          18:57:26 GMT; Max-Age=604800; path=/']
+      transfer-encoding: [chunked]
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_should_remove_record.yaml b/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_should_remove_record.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_should_remove_record.yaml
@@ -0,0 +1,154 @@
+interactions:
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Domain.Info
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:30:12"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","grade_title":"\u65b0\u514d\u8d39\u5957\u9910","status":"enable","ext_status":"dnserror","records":"2","group_id":"1","is_mark":"no","remark":false,"is_vip":"no","searchengine_push":"yes","user_id":"1446297","created_on":"2016-05-11
+        02:35:23","updated_on":"2016-05-11 02:35:23","ttl":"600","cname_speedup":"disable","owner":"lexicon@mailinator.com"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['542']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:30:12 GMT']
+      etag: [W/"0525d02a6e6a817266886ac8945c3526"]
+      expires: ['Tue, 10 May 2016 21:30:12 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=45rp592poeds9844londm2g9o0; path=/; secure; HttpOnly,
+        '_xsrf=532b32b81c0d037052d6c09e1e779321%7C1462908612; expires=Tue, 17-May-2016
+          19:30:12 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_line=%E9%BB%98%E8%AE%A4&format=json&value=challengetoken&record_type=TXT&sub_domain=delete.testfilt&domain_id=38280687
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['178']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Create
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:30:19"},"record":{"id":"189596266","name":"delete.testfilt","status":"enabled","weight":null}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['184']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:30:19 GMT']
+      etag: [W/"a24f0be2b86161948ddc26f5b38a866c"]
+      expires: ['Tue, 10 May 2016 21:30:19 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=vdjfru32arav95rtfn4bi0hud7; path=/; secure; HttpOnly,
+        '_xsrf=587a19663652193d78df0741b5b26243%7C1462908619; expires=Tue, 17-May-2016
+          19:30:19 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.List
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:30:22"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","owner":"lexicon@mailinator.com"},"info":{"sub_domains":"3","record_total":"3"},"records":[{"id":"189590584","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns1.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189590585","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns2.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189596266","name":"delete.testfilt","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        03:30:19","use_aqb":"no"}]}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['1058']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:30:22 GMT']
+      etag: [W/"4932d4589dfaa3abfaceb91257e4098c"]
+      expires: ['Tue, 10 May 2016 21:30:22 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=t5f6m35pcfmtvoa5k3hhljbsh3; path=/; secure; HttpOnly,
+        '_xsrf=f05e68b98cb5b8467d98cb1ea9b91da7%7C1462908622; expires=Tue, 17-May-2016
+          19:30:22 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_id=189596266&domain_id=38280687&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['103']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Remove
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:30:26"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['98']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:30:26 GMT']
+      etag: [W/"ffa0d881fd623df76f0e82cc9b2dcee2"]
+      expires: ['Tue, 10 May 2016 21:30:26 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=c0k055f57e8hscdv2402fd28h6; path=/; secure; HttpOnly,
+        '_xsrf=efc721d8a7e325f4ff55372e49037990%7C1462908626; expires=Tue, 17-May-2016
+          19:30:26 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.List
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:30:29"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","owner":"lexicon@mailinator.com"},"info":{"sub_domains":"2","record_total":"2"},"records":[{"id":"189590584","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns1.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189590585","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns2.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"}]}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['804']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:30:29 GMT']
+      etag: [W/"7d6777f3c246d69c5ff6e51274f17079"]
+      expires: ['Tue, 10 May 2016 21:30:29 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=e1qbg0jbemj55j07ih11a2kk94; path=/; secure; HttpOnly,
+        '_xsrf=7d90bb1c55225f94f31ea9922686e8dc%7C1462908629; expires=Tue, 17-May-2016
+          19:30:29 GMT; Max-Age=604800; path=/']
+      transfer-encoding: [chunked]
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_with_fqdn_name_should_remove_record.yaml b/tests/fixtures/cassettes/dnspod/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/dnspod/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_with_fqdn_name_should_remove_record.yaml
@@ -0,0 +1,155 @@
+interactions:
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Domain.Info
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:30:42"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","grade_title":"\u65b0\u514d\u8d39\u5957\u9910","status":"enable","ext_status":"dnserror","records":"2","group_id":"1","is_mark":"no","remark":false,"is_vip":"no","searchengine_push":"yes","user_id":"1446297","created_on":"2016-05-11
+        02:35:23","updated_on":"2016-05-11 02:35:23","ttl":"600","cname_speedup":"disable","owner":"lexicon@mailinator.com"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['542']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:30:42 GMT']
+      etag: [W/"15d6db9d42e03179b8c6b5c88d612927"]
+      expires: ['Tue, 10 May 2016 21:30:42 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=6mplhtlcfeiffmls5tcdqc6pv4; path=/; secure; HttpOnly,
+        '_xsrf=22d0c06c9694004fb89b537e8c733a9c%7C1462908642; expires=Tue, 17-May-2016
+          19:30:42 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_line=%E9%BB%98%E8%AE%A4&format=json&value=challengetoken&record_type=TXT&sub_domain=delete.testfqdn&domain_id=38280687
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['178']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Create
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:30:50"},"record":{"id":"189596336","name":"delete.testfqdn","status":"enabled","weight":null}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['184']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:30:50 GMT']
+      etag: [W/"623036b58ba362a6e0b9e57f2775785c"]
+      expires: ['Tue, 10 May 2016 21:30:50 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=umhrnb7sm6f5ihq78682l6jc14; path=/; secure; HttpOnly,
+        '_xsrf=703cc1f8e788bc78410cff01f4ac96eb%7C1462908650; expires=Tue, 17-May-2016
+          19:30:50 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.List
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:31:00"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","owner":"lexicon@mailinator.com"},"info":{"sub_domains":"4","record_total":"4"},"records":[{"id":"189590584","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns1.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189590585","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns2.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189596336","name":"delete.testfqdn","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        03:30:50","use_aqb":"no"},{"id":"189596346","name":"delete.testfull","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        03:30:53","use_aqb":"no"}]}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['1312']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:31:00 GMT']
+      etag: [W/"d9ab9cdbc516b345399fcecbb4199869"]
+      expires: ['Tue, 10 May 2016 21:31:00 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=ihvmql3hjuesvmnphhluvv0gd1; path=/; secure; HttpOnly,
+        '_xsrf=ad1b7171c3f0461be33974726cae456f%7C1462908660; expires=Tue, 17-May-2016
+          19:31:00 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_id=189596336&domain_id=38280687&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['103']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Remove
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:31:32"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['98']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:31:32 GMT']
+      etag: [W/"59aefb2ffb78ca7e7d25739cfb556a87"]
+      expires: ['Tue, 10 May 2016 21:31:32 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=jkjur0oeqccpqg4cn94ghmp1m7; path=/; secure; HttpOnly,
+        '_xsrf=abd64f2bcc940c06c76e4f7e7cbdfe4f%7C1462908692; expires=Tue, 17-May-2016
+          19:31:32 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.List
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:31:38"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","owner":"lexicon@mailinator.com"},"info":{"sub_domains":"2","record_total":"2"},"records":[{"id":"189590584","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns1.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189590585","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns2.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"}]}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['804']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:31:38 GMT']
+      etag: [W/"aa433cd5c822c5fcc282eb5be1704e4a"]
+      expires: ['Tue, 10 May 2016 21:31:38 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=lse69o5q9jflsuu9n6ocp5ijg0; path=/; secure; HttpOnly,
+        '_xsrf=053380826bd29b669b3193153c047da1%7C1462908698; expires=Tue, 17-May-2016
+          19:31:38 GMT; Max-Age=604800; path=/']
+      transfer-encoding: [chunked]
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_with_full_name_should_remove_record.yaml b/tests/fixtures/cassettes/dnspod/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/dnspod/IntegrationTests/test_Provider_when_calling_delete_record_by_filter_with_full_name_should_remove_record.yaml
@@ -0,0 +1,155 @@
+interactions:
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Domain.Info
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:30:47"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","grade_title":"\u65b0\u514d\u8d39\u5957\u9910","status":"enable","ext_status":"dnserror","records":"2","group_id":"1","is_mark":"no","remark":false,"is_vip":"no","searchengine_push":"yes","user_id":"1446297","created_on":"2016-05-11
+        02:35:23","updated_on":"2016-05-11 02:35:23","ttl":"600","cname_speedup":"disable","owner":"lexicon@mailinator.com"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['542']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:30:47 GMT']
+      etag: [W/"1128f9ce40f379849261919455824f35"]
+      expires: ['Tue, 10 May 2016 21:30:47 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=f1s1obq51s6a3055143pgsl8u0; path=/; secure; HttpOnly,
+        '_xsrf=acdf3049b2ed4116276442017a3ec3e2%7C1462908647; expires=Tue, 17-May-2016
+          19:30:47 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_line=%E9%BB%98%E8%AE%A4&format=json&value=challengetoken&record_type=TXT&sub_domain=delete.testfull&domain_id=38280687
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['178']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Create
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:30:53"},"record":{"id":"189596346","name":"delete.testfull","status":"enabled","weight":null}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['184']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:30:53 GMT']
+      etag: [W/"c2cf7f50e43b4276575a31494f88362a"]
+      expires: ['Tue, 10 May 2016 21:30:53 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=u34081st6ff8cpkbf1g0p5sgm4; path=/; secure; HttpOnly,
+        '_xsrf=34db1e074bfa9a4373e69ea7bdc6fdb9%7C1462908653; expires=Tue, 17-May-2016
+          19:30:53 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.List
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:31:12"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","owner":"lexicon@mailinator.com"},"info":{"sub_domains":"4","record_total":"4"},"records":[{"id":"189590584","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns1.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189590585","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns2.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189596336","name":"delete.testfqdn","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        03:30:50","use_aqb":"no"},{"id":"189596346","name":"delete.testfull","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        03:30:53","use_aqb":"no"}]}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['1312']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:31:12 GMT']
+      etag: [W/"23fa4fb7b9d9c73054b4e9c9bebe1d94"]
+      expires: ['Tue, 10 May 2016 21:31:12 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=krcjknnvuqbdo1sgemss6ice27; path=/; secure; HttpOnly,
+        '_xsrf=90cd343dc9d58a33bbbcecd5d758b5b3%7C1462908672; expires=Tue, 17-May-2016
+          19:31:12 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_id=189596346&domain_id=38280687&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['103']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Remove
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:31:34"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['98']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:31:34 GMT']
+      etag: [W/"effdb86712190f3e52cb6c19bb781ec6"]
+      expires: ['Tue, 10 May 2016 21:31:34 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=1mv35h5g5bgecqb88oolep2cf3; path=/; secure; HttpOnly,
+        '_xsrf=c3ebaabbea2268e1dc495ca672f1c698%7C1462908694; expires=Tue, 17-May-2016
+          19:31:34 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.List
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:31:39"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","owner":"lexicon@mailinator.com"},"info":{"sub_domains":"2","record_total":"2"},"records":[{"id":"189590584","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns1.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189590585","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns2.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"}]}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['804']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:31:39 GMT']
+      etag: [W/"35d878f02112b9489ed751fa2fb10ae4"]
+      expires: ['Tue, 10 May 2016 21:31:39 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=p7fqghnpdlnfa6lenj4kgrs230; path=/; secure; HttpOnly,
+        '_xsrf=1733c5432484e486a6dc45c604986346%7C1462908699; expires=Tue, 17-May-2016
+          19:31:39 GMT; Max-Age=604800; path=/']
+      transfer-encoding: [chunked]
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_delete_record_by_identifier_should_remove_record.yaml b/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_delete_record_by_identifier_should_remove_record.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_delete_record_by_identifier_should_remove_record.yaml
@@ -0,0 +1,154 @@
+interactions:
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Domain.Info
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:26:54"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","grade_title":"\u65b0\u514d\u8d39\u5957\u9910","status":"enable","ext_status":"dnserror","records":"2","group_id":"1","is_mark":"no","remark":false,"is_vip":"no","searchengine_push":"yes","user_id":"1446297","created_on":"2016-05-11
+        02:35:23","updated_on":"2016-05-11 02:35:23","ttl":"600","cname_speedup":"disable","owner":"lexicon@mailinator.com"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['542']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:26:54 GMT']
+      etag: [W/"7ce934e7eaef46c5e5cd2e57bc05b816"]
+      expires: ['Tue, 10 May 2016 21:26:54 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=r35rktbpfc6hf6gnghgv0ea3h2; path=/; secure; HttpOnly,
+        '_xsrf=24613fec6513aed49b57162f3ea5623f%7C1462908414; expires=Tue, 17-May-2016
+          19:26:54 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_line=%E9%BB%98%E8%AE%A4&format=json&value=challengetoken&record_type=TXT&sub_domain=delete.testid&domain_id=38280687
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['176']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Create
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:27:11"},"record":{"id":"189595901","name":"delete.testid","status":"enabled","weight":null}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['182']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:27:11 GMT']
+      etag: [W/"2c85edd3a8f30a703ccc76fa32f05111"]
+      expires: ['Tue, 10 May 2016 21:27:11 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=b75i0b7rk4rfbau0clq3n7s5j6; path=/; secure; HttpOnly,
+        '_xsrf=1837b5bf99c74526ce5e4da9cba7a7c7%7C1462908431; expires=Tue, 17-May-2016
+          19:27:11 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.List
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:27:32"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","owner":"lexicon@mailinator.com"},"info":{"sub_domains":"3","record_total":"3"},"records":[{"id":"189590584","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns1.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189590585","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns2.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189595901","name":"delete.testid","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        03:27:11","use_aqb":"no"}]}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['1056']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:27:32 GMT']
+      etag: [W/"822276a17b46f63d3efa1b57b4004a80"]
+      expires: ['Tue, 10 May 2016 21:27:32 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=38hg17ns70t7l993elnbnsu566; path=/; secure; HttpOnly,
+        '_xsrf=e6fd911a5e9ef66e4400c89a656735a3%7C1462908452; expires=Tue, 17-May-2016
+          19:27:32 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_id=189595901&domain_id=38280687&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['103']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Remove
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:28:14"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['98']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:28:14 GMT']
+      etag: [W/"d5ef23ff7759739fb401b0e3a6d98f46"]
+      expires: ['Tue, 10 May 2016 21:28:14 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=cprppmd5aa2gburovlq2rfaoq3; path=/; secure; HttpOnly,
+        '_xsrf=ad33bb0d1b9e41e1891f8461c9ecae2b%7C1462908494; expires=Tue, 17-May-2016
+          19:28:14 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.List
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:28:47"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","owner":"lexicon@mailinator.com"},"info":{"sub_domains":"2","record_total":"2"},"records":[{"id":"189590584","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns1.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189590585","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns2.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"}]}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['804']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:28:47 GMT']
+      etag: [W/"e787966395c3cea59f360ec79ffcbfa8"]
+      expires: ['Tue, 10 May 2016 21:28:47 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=rko25p8dievmhhepr3b95c2nv2; path=/; secure; HttpOnly,
+        '_xsrf=f27cf1c293db8c11577314d0ba4bc413%7C1462908527; expires=Tue, 17-May-2016
+          19:28:47 GMT; Max-Age=604800; path=/']
+      transfer-encoding: [chunked]
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_list_records_with_fqdn_name_filter_should_return_record.yaml b/tests/fixtures/cassettes/dnspod/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/dnspod/IntegrationTests/test_Provider_when_calling_list_records_with_fqdn_name_filter_should_return_record.yaml
@@ -0,0 +1,101 @@
+interactions:
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Domain.Info
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:59:15"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","grade_title":"\u65b0\u514d\u8d39\u5957\u9910","status":"enable","ext_status":"dnserror","records":"7","group_id":"1","is_mark":"no","remark":false,"is_vip":"no","searchengine_push":"yes","user_id":"1446297","created_on":"2016-05-11
+        02:35:23","updated_on":"2016-05-11 02:35:23","ttl":"600","cname_speedup":"disable","owner":"lexicon@mailinator.com"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['542']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:59:15 GMT']
+      etag: [W/"c61e9b1a297f34cc95b0b810cea5bb73"]
+      expires: ['Tue, 10 May 2016 20:59:15 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=jkasi9gmg5h8a94m29thehgvt4; path=/; secure; HttpOnly,
+        '_xsrf=5e57accef7a41b1f69cf6b54d016125e%7C1462906755; expires=Tue, 17-May-2016
+          18:59:15 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_line=%E9%BB%98%E8%AE%A4&format=json&value=challengetoken&record_type=TXT&sub_domain=random.fqdntest&domain_id=38280687
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['178']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Create
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:59:24"},"record":{"id":"189593133","name":"random.fqdntest","status":"enabled","weight":null}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['184']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:59:24 GMT']
+      etag: [W/"e8112b682ffb9d72f71954dbe2f7d29b"]
+      expires: ['Tue, 10 May 2016 20:59:24 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=nt8lolnk7gkpie3lfkr635rfi5; path=/; secure; HttpOnly,
+        '_xsrf=d76267cb938074560c7cbc30e97e9e39%7C1462906764; expires=Tue, 17-May-2016
+          18:59:24 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.List
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:59:32"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","owner":"lexicon@mailinator.com"},"info":{"sub_domains":"10","record_total":"10"},"records":[{"id":"189590584","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns1.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189590585","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns2.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189592932","name":"docs","line":"\u9ed8\u8ba4","type":"CNAME","ttl":"600","value":"docs.example.com.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:21","use_aqb":"no"},{"id":"189592919","name":"localhost","line":"\u9ed8\u8ba4","type":"A","ttl":"600","value":"127.0.0.1","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:15","use_aqb":"no"},{"id":"189593133","name":"random.fqdntest","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:59:24","use_aqb":"no"},{"id":"189593136","name":"random.fulltest","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:59:26","use_aqb":"no"},{"id":"189593143","name":"random.test","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:59:27","use_aqb":"no"},{"id":"189592939","name":"_acme-challenge.fqdn","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:22","use_aqb":"no"},{"id":"189592942","name":"_acme-challenge.full","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:23","use_aqb":"no"},{"id":"189592945","name":"_acme-challenge.test","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:26","use_aqb":"no"}]}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['2830']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:59:32 GMT']
+      etag: [W/"39619719ebf02b2aff191222318e4082"]
+      expires: ['Tue, 10 May 2016 20:59:32 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=jo4totuoaml8md03t6qd1jr6b2; path=/; secure; HttpOnly,
+        '_xsrf=60de379dd00e582004defd6cbf88e617%7C1462906772; expires=Tue, 17-May-2016
+          18:59:32 GMT; Max-Age=604800; path=/']
+      transfer-encoding: [chunked]
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_list_records_with_full_name_filter_should_return_record.yaml b/tests/fixtures/cassettes/dnspod/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/dnspod/IntegrationTests/test_Provider_when_calling_list_records_with_full_name_filter_should_return_record.yaml
@@ -0,0 +1,101 @@
+interactions:
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Domain.Info
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:59:17"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","grade_title":"\u65b0\u514d\u8d39\u5957\u9910","status":"enable","ext_status":"dnserror","records":"7","group_id":"1","is_mark":"no","remark":false,"is_vip":"no","searchengine_push":"yes","user_id":"1446297","created_on":"2016-05-11
+        02:35:23","updated_on":"2016-05-11 02:35:23","ttl":"600","cname_speedup":"disable","owner":"lexicon@mailinator.com"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['542']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:59:17 GMT']
+      etag: [W/"f739ee3f19e86090fa0c27c3f89d9397"]
+      expires: ['Tue, 10 May 2016 20:59:17 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=pkuog4vuenveh91sn7idmqdid4; path=/; secure; HttpOnly,
+        '_xsrf=f4ef7b764f2a46d1c19f1b467c6d0261%7C1462906757; expires=Tue, 17-May-2016
+          18:59:17 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_line=%E9%BB%98%E8%AE%A4&format=json&value=challengetoken&record_type=TXT&sub_domain=random.fulltest&domain_id=38280687
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['178']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Create
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:59:26"},"record":{"id":"189593136","name":"random.fulltest","status":"enabled","weight":null}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['184']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:59:26 GMT']
+      etag: [W/"abe51a1814cb46ddcecfb12d1beeb828"]
+      expires: ['Tue, 10 May 2016 20:59:26 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=2ff7u35v0i6bpi24opdr91pnn7; path=/; secure; HttpOnly,
+        '_xsrf=ae3b03f8a514ba97dc3d65e8782a2e55%7C1462906766; expires=Tue, 17-May-2016
+          18:59:26 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.List
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:59:33"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","owner":"lexicon@mailinator.com"},"info":{"sub_domains":"10","record_total":"10"},"records":[{"id":"189590584","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns1.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189590585","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns2.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189592932","name":"docs","line":"\u9ed8\u8ba4","type":"CNAME","ttl":"600","value":"docs.example.com.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:21","use_aqb":"no"},{"id":"189592919","name":"localhost","line":"\u9ed8\u8ba4","type":"A","ttl":"600","value":"127.0.0.1","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:15","use_aqb":"no"},{"id":"189593133","name":"random.fqdntest","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:59:24","use_aqb":"no"},{"id":"189593136","name":"random.fulltest","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:59:26","use_aqb":"no"},{"id":"189593143","name":"random.test","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:59:27","use_aqb":"no"},{"id":"189592939","name":"_acme-challenge.fqdn","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:22","use_aqb":"no"},{"id":"189592942","name":"_acme-challenge.full","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:23","use_aqb":"no"},{"id":"189592945","name":"_acme-challenge.test","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:26","use_aqb":"no"}]}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['2830']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:59:33 GMT']
+      etag: [W/"33a8f00ab33b34558e9a42227bf98c34"]
+      expires: ['Tue, 10 May 2016 20:59:33 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=qdhq6s4pn7r92epg1oorumsqg1; path=/; secure; HttpOnly,
+        '_xsrf=1f5e24eb9c577e80d7aa9363de27f3c6%7C1462906773; expires=Tue, 17-May-2016
+          18:59:33 GMT; Max-Age=604800; path=/']
+      transfer-encoding: [chunked]
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_list_records_with_name_filter_should_return_record.yaml b/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_list_records_with_name_filter_should_return_record.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_list_records_with_name_filter_should_return_record.yaml
@@ -0,0 +1,101 @@
+interactions:
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Domain.Info
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:59:18"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","grade_title":"\u65b0\u514d\u8d39\u5957\u9910","status":"enable","ext_status":"dnserror","records":"7","group_id":"1","is_mark":"no","remark":false,"is_vip":"no","searchengine_push":"yes","user_id":"1446297","created_on":"2016-05-11
+        02:35:23","updated_on":"2016-05-11 02:35:23","ttl":"600","cname_speedup":"disable","owner":"lexicon@mailinator.com"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['542']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:59:18 GMT']
+      etag: [W/"0de202cdf6c8a71d4d860c24315ceedd"]
+      expires: ['Tue, 10 May 2016 20:59:18 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=0nb1dafd55801pupgn0mo3drl7; path=/; secure; HttpOnly,
+        '_xsrf=6ad3af0cf77282fbc832e80d7360297a%7C1462906758; expires=Tue, 17-May-2016
+          18:59:18 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_line=%E9%BB%98%E8%AE%A4&format=json&value=challengetoken&record_type=TXT&sub_domain=random.test&domain_id=38280687
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['174']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Create
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:59:27"},"record":{"id":"189593143","name":"random.test","status":"enabled","weight":null}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['180']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:59:27 GMT']
+      etag: [W/"1c992f52c77195e266bbaffafeb9571b"]
+      expires: ['Tue, 10 May 2016 20:59:27 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=sha5innjg1nofvqf8njoncgqp1; path=/; secure; HttpOnly,
+        '_xsrf=5b88dd48ced1730575bb8931d6ad5efd%7C1462906767; expires=Tue, 17-May-2016
+          18:59:27 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.List
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:59:35"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","owner":"lexicon@mailinator.com"},"info":{"sub_domains":"10","record_total":"10"},"records":[{"id":"189590584","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns1.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189590585","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns2.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189592932","name":"docs","line":"\u9ed8\u8ba4","type":"CNAME","ttl":"600","value":"docs.example.com.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:21","use_aqb":"no"},{"id":"189592919","name":"localhost","line":"\u9ed8\u8ba4","type":"A","ttl":"600","value":"127.0.0.1","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:15","use_aqb":"no"},{"id":"189593133","name":"random.fqdntest","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:59:24","use_aqb":"no"},{"id":"189593136","name":"random.fulltest","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:59:26","use_aqb":"no"},{"id":"189593143","name":"random.test","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:59:27","use_aqb":"no"},{"id":"189592939","name":"_acme-challenge.fqdn","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:22","use_aqb":"no"},{"id":"189592942","name":"_acme-challenge.full","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:23","use_aqb":"no"},{"id":"189592945","name":"_acme-challenge.test","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:26","use_aqb":"no"}]}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['2830']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:59:35 GMT']
+      etag: [W/"f8ef4b6bc857e95611403c556091c67d"]
+      expires: ['Tue, 10 May 2016 20:59:35 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=kjl35bqcqgvvtkmpl8h0ec4de5; path=/; secure; HttpOnly,
+        '_xsrf=2ee557a17eccd304314c81e84ef08870%7C1462906775; expires=Tue, 17-May-2016
+          18:59:35 GMT; Max-Age=604800; path=/']
+      transfer-encoding: [chunked]
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_list_records_with_no_arguments_should_list_all.yaml b/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_list_records_with_no_arguments_should_list_all.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_list_records_with_no_arguments_should_list_all.yaml
@@ -0,0 +1,72 @@
+interactions:
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Domain.Info
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:59:19"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","grade_title":"\u65b0\u514d\u8d39\u5957\u9910","status":"enable","ext_status":"dnserror","records":"7","group_id":"1","is_mark":"no","remark":false,"is_vip":"no","searchengine_push":"yes","user_id":"1446297","created_on":"2016-05-11
+        02:35:23","updated_on":"2016-05-11 02:35:23","ttl":"600","cname_speedup":"disable","owner":"lexicon@mailinator.com"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['542']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:59:19 GMT']
+      etag: [W/"7d709ca8ae7804a37388e9b8b8be7cb7"]
+      expires: ['Tue, 10 May 2016 20:59:19 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=e6mha804ju1srql6t448pi0sb4; path=/; secure; HttpOnly,
+        '_xsrf=2db851325b6c3dbed94f6edd5cb2833b%7C1462906759; expires=Tue, 17-May-2016
+          18:59:19 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.List
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 02:59:28"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","owner":"lexicon@mailinator.com"},"info":{"sub_domains":"10","record_total":"10"},"records":[{"id":"189590584","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns1.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189590585","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns2.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189592932","name":"docs","line":"\u9ed8\u8ba4","type":"CNAME","ttl":"600","value":"docs.example.com.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:21","use_aqb":"no"},{"id":"189592919","name":"localhost","line":"\u9ed8\u8ba4","type":"A","ttl":"600","value":"127.0.0.1","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:15","use_aqb":"no"},{"id":"189593133","name":"random.fqdntest","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:59:24","use_aqb":"no"},{"id":"189593136","name":"random.fulltest","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:59:26","use_aqb":"no"},{"id":"189593143","name":"random.test","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:59:27","use_aqb":"no"},{"id":"189592939","name":"_acme-challenge.fqdn","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:22","use_aqb":"no"},{"id":"189592942","name":"_acme-challenge.full","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:23","use_aqb":"no"},{"id":"189592945","name":"_acme-challenge.test","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:26","use_aqb":"no"}]}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['2830']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 18:59:28 GMT']
+      etag: [W/"5872df6dbdf3103ce29d2afcfee1897c"]
+      expires: ['Tue, 10 May 2016 20:59:28 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=d0rsqns90g5ofe12n3gsveptl1; path=/; secure; HttpOnly,
+        '_xsrf=b3c8e25b856b2a2ec081cc72c262ef29%7C1462906768; expires=Tue, 17-May-2016
+          18:59:28 GMT; Max-Age=604800; path=/']
+      transfer-encoding: [chunked]
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_update_record_should_modify_record.yaml b/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_update_record_should_modify_record.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_update_record_should_modify_record.yaml
@@ -0,0 +1,133 @@
+interactions:
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Domain.Info
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:00:13"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","grade_title":"\u65b0\u514d\u8d39\u5957\u9910","status":"enable","ext_status":"dnserror","records":"10","group_id":"1","is_mark":"no","remark":false,"is_vip":"no","searchengine_push":"yes","user_id":"1446297","created_on":"2016-05-11
+        02:35:23","updated_on":"2016-05-11 02:35:23","ttl":"600","cname_speedup":"disable","owner":"lexicon@mailinator.com"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['543']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:00:13 GMT']
+      etag: [W/"987a82c4e8a8e22da8bf98c776120afe"]
+      expires: ['Tue, 10 May 2016 21:00:13 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=ff3ivbmfj1p0o97h3huump4at3; path=/; secure; HttpOnly,
+        '_xsrf=b2f4e385b247ae1876541a9c516dcafc%7C1462906813; expires=Tue, 17-May-2016
+          19:00:13 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_line=%E9%BB%98%E8%AE%A4&format=json&value=challengetoken&record_type=TXT&sub_domain=orig.test&domain_id=38280687
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['172']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Create
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:00:30"},"record":{"id":"189593259","name":"orig.test","status":"enabled","weight":null}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['178']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:00:30 GMT']
+      etag: [W/"e6d0d2cad3b49e14d4639fc584876a40"]
+      expires: ['Tue, 10 May 2016 21:00:30 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=7cirtj1cjvqmr2j9s890m0bkf5; path=/; secure; HttpOnly,
+        '_xsrf=6cc0a87863efd4267e641bd8befa12fb%7C1462906830; expires=Tue, 17-May-2016
+          19:00:30 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.List
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:01:24"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","owner":"lexicon@mailinator.com"},"info":{"sub_domains":"13","record_total":"13"},"records":[{"id":"189590584","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns1.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189590585","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns2.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189592932","name":"docs","line":"\u9ed8\u8ba4","type":"CNAME","ttl":"600","value":"docs.example.com.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:21","use_aqb":"no"},{"id":"189592919","name":"localhost","line":"\u9ed8\u8ba4","type":"A","ttl":"600","value":"127.0.0.1","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:15","use_aqb":"no"},{"id":"189593259","name":"orig.test","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        03:00:30","use_aqb":"no"},{"id":"189593267","name":"orig.testfqdn","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        03:00:33","use_aqb":"no"},{"id":"189593272","name":"orig.testfull","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        03:00:37","use_aqb":"no"},{"id":"189593133","name":"random.fqdntest","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:59:24","use_aqb":"no"},{"id":"189593136","name":"random.fulltest","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:59:26","use_aqb":"no"},{"id":"189593143","name":"random.test","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:59:27","use_aqb":"no"},{"id":"189592939","name":"_acme-challenge.fqdn","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:22","use_aqb":"no"},{"id":"189592942","name":"_acme-challenge.full","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:23","use_aqb":"no"},{"id":"189592945","name":"_acme-challenge.test","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:26","use_aqb":"no"}]}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['3582']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:01:24 GMT']
+      etag: [W/"b7b4edf6edbf9a5f66c823851efa2969"]
+      expires: ['Tue, 10 May 2016 21:01:24 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=42jifdt317mk13eqcannfk0h43; path=/; secure; HttpOnly,
+        '_xsrf=76cb1dc82c5a99d7406e84e3a5a0053f%7C1462906884; expires=Tue, 17-May-2016
+          19:01:24 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_line=%E9%BB%98%E8%AE%A4&format=json&value=challengetoken&record_type=TXT&sub_domain=updated.test&record_id=189593259&domain_id=38280687
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['195']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Modify
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:01:42"},"record":{"id":189593259,"name":"updated.test","value":"challengetoken","status":"enable","weight":null}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['203']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:01:42 GMT']
+      etag: [W/"1c96e3e66855c5af5090094e62bf6a86"]
+      expires: ['Tue, 10 May 2016 21:01:42 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=3rbov55dcf45iir6u01fmfaj00; path=/; secure; HttpOnly,
+        '_xsrf=4a5b9fc0b408ece863fa34335dd9e422%7C1462906902; expires=Tue, 17-May-2016
+          19:01:42 GMT; Max-Age=604800; path=/']
+      transfer-encoding: [chunked]
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_update_record_with_fqdn_name_should_modify_record.yaml b/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_update_record_with_fqdn_name_should_modify_record.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_update_record_with_fqdn_name_should_modify_record.yaml
@@ -0,0 +1,133 @@
+interactions:
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Domain.Info
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:00:17"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","grade_title":"\u65b0\u514d\u8d39\u5957\u9910","status":"enable","ext_status":"dnserror","records":"10","group_id":"1","is_mark":"no","remark":false,"is_vip":"no","searchengine_push":"yes","user_id":"1446297","created_on":"2016-05-11
+        02:35:23","updated_on":"2016-05-11 02:35:23","ttl":"600","cname_speedup":"disable","owner":"lexicon@mailinator.com"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['543']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:00:17 GMT']
+      etag: [W/"882c4373c5151ca79afbf6ee4ec6fcb0"]
+      expires: ['Tue, 10 May 2016 21:00:17 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=uib3b135fgivvfv9mphh8cont2; path=/; secure; HttpOnly,
+        '_xsrf=d2945eb74bbfc1221d624837ae398c04%7C1462906817; expires=Tue, 17-May-2016
+          19:00:17 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_line=%E9%BB%98%E8%AE%A4&format=json&value=challengetoken&record_type=TXT&sub_domain=orig.testfqdn&domain_id=38280687
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['176']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Create
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:00:33"},"record":{"id":"189593267","name":"orig.testfqdn","status":"enabled","weight":null}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['182']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:00:34 GMT']
+      etag: [W/"db108b30ef5008f3e1269628411b02e7"]
+      expires: ['Tue, 10 May 2016 21:00:34 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=l2ot7d2ulcsd3kqk4vniujtcg3; path=/; secure; HttpOnly,
+        '_xsrf=6e2638ab173d2d424426ff72bac7f663%7C1462906833; expires=Tue, 17-May-2016
+          19:00:33 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.List
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:01:34"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","owner":"lexicon@mailinator.com"},"info":{"sub_domains":"13","record_total":"13"},"records":[{"id":"189590584","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns1.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189590585","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns2.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189592932","name":"docs","line":"\u9ed8\u8ba4","type":"CNAME","ttl":"600","value":"docs.example.com.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:21","use_aqb":"no"},{"id":"189592919","name":"localhost","line":"\u9ed8\u8ba4","type":"A","ttl":"600","value":"127.0.0.1","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:15","use_aqb":"no"},{"id":"189593259","name":"orig.test","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        03:00:30","use_aqb":"no"},{"id":"189593267","name":"orig.testfqdn","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        03:00:33","use_aqb":"no"},{"id":"189593272","name":"orig.testfull","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        03:00:37","use_aqb":"no"},{"id":"189593133","name":"random.fqdntest","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:59:24","use_aqb":"no"},{"id":"189593136","name":"random.fulltest","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:59:26","use_aqb":"no"},{"id":"189593143","name":"random.test","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:59:27","use_aqb":"no"},{"id":"189592939","name":"_acme-challenge.fqdn","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:22","use_aqb":"no"},{"id":"189592942","name":"_acme-challenge.full","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:23","use_aqb":"no"},{"id":"189592945","name":"_acme-challenge.test","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:26","use_aqb":"no"}]}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['3582']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:01:34 GMT']
+      etag: [W/"f50f078349b09d779178b26e5cf84d49"]
+      expires: ['Tue, 10 May 2016 21:01:34 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=gv58r61dm4k1bchihv1qp88lb6; path=/; secure; HttpOnly,
+        '_xsrf=15fd7415960a6001220e60f1a13fab23%7C1462906894; expires=Tue, 17-May-2016
+          19:01:34 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_line=%E9%BB%98%E8%AE%A4&format=json&value=challengetoken&record_type=TXT&sub_domain=updated.testfqdn&record_id=189593267&domain_id=38280687
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['199']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Modify
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:01:44"},"record":{"id":189593267,"name":"updated.testfqdn","value":"challengetoken","status":"enable","weight":null}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['207']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:01:44 GMT']
+      etag: [W/"ea6412eb2d4c4d791609b36dd278353c"]
+      expires: ['Tue, 10 May 2016 21:01:44 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=ddj2jhp564ju6qhdnipiid3tk4; path=/; secure; HttpOnly,
+        '_xsrf=73036891ff00d76540a1c735ea82989e%7C1462906904; expires=Tue, 17-May-2016
+          19:01:44 GMT; Max-Age=604800; path=/']
+      transfer-encoding: [chunked]
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_update_record_with_full_name_should_modify_record.yaml b/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_update_record_with_full_name_should_modify_record.yaml
new file mode 100644
--- /dev/null
+++ b/tests/fixtures/cassettes/dnspod/IntegrationTests/test_Provider_when_calling_update_record_with_full_name_should_modify_record.yaml
@@ -0,0 +1,133 @@
+interactions:
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Domain.Info
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:00:25"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","grade_title":"\u65b0\u514d\u8d39\u5957\u9910","status":"enable","ext_status":"dnserror","records":"10","group_id":"1","is_mark":"no","remark":false,"is_vip":"no","searchengine_push":"yes","user_id":"1446297","created_on":"2016-05-11
+        02:35:23","updated_on":"2016-05-11 02:35:23","ttl":"600","cname_speedup":"disable","owner":"lexicon@mailinator.com"}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['543']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:00:25 GMT']
+      etag: [W/"f6660872d9939632f717e36dd9e6ea42"]
+      expires: ['Tue, 10 May 2016 21:00:25 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=8daftmh8rt26p1pkv15alfb8r4; path=/; secure; HttpOnly,
+        '_xsrf=680289cc12c51e6e642462b48490da26%7C1462906825; expires=Tue, 17-May-2016
+          19:00:25 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_line=%E9%BB%98%E8%AE%A4&format=json&value=challengetoken&record_type=TXT&sub_domain=orig.testfull&domain_id=38280687
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['176']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Create
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:00:37"},"record":{"id":"189593272","name":"orig.testfull","status":"enabled","weight":null}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['182']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:00:37 GMT']
+      etag: [W/"bf2a2055eacf7b01f5ddf34fbfe31329"]
+      expires: ['Tue, 10 May 2016 21:00:37 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=vqsvb06qu76ne88kujdha27l71; path=/; secure; HttpOnly,
+        '_xsrf=a3c7d27a2348ff88ba93eaadc24226d1%7C1462906837; expires=Tue, 17-May-2016
+          19:00:37 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: domain=capsulecd.com&format=json
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['85']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.List
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:01:36"},"domain":{"id":"38280687","name":"capsulecd.com","punycode":"capsulecd.com","grade":"DP_Free","owner":"lexicon@mailinator.com"},"info":{"sub_domains":"13","record_total":"13"},"records":[{"id":"189590584","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns1.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189590585","name":"@","line":"\u9ed8\u8ba4","type":"NS","ttl":"86400","value":"f1g1ns2.dnspod.net.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:35:23","use_aqb":"no","hold":"hold"},{"id":"189592932","name":"docs","line":"\u9ed8\u8ba4","type":"CNAME","ttl":"600","value":"docs.example.com.","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:21","use_aqb":"no"},{"id":"189592919","name":"localhost","line":"\u9ed8\u8ba4","type":"A","ttl":"600","value":"127.0.0.1","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:15","use_aqb":"no"},{"id":"189593259","name":"orig.test","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        03:00:30","use_aqb":"no"},{"id":"189593267","name":"orig.testfqdn","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        03:00:33","use_aqb":"no"},{"id":"189593272","name":"orig.testfull","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        03:00:37","use_aqb":"no"},{"id":"189593133","name":"random.fqdntest","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:59:24","use_aqb":"no"},{"id":"189593136","name":"random.fulltest","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:59:26","use_aqb":"no"},{"id":"189593143","name":"random.test","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:59:27","use_aqb":"no"},{"id":"189592939","name":"_acme-challenge.fqdn","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:22","use_aqb":"no"},{"id":"189592942","name":"_acme-challenge.full","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:23","use_aqb":"no"},{"id":"189592945","name":"_acme-challenge.test","line":"\u9ed8\u8ba4","type":"TXT","ttl":"600","value":"challengetoken","weight":null,"mx":"0","enabled":"1","status":"enabled","monitor_status":"","remark":"","updated_on":"2016-05-11
+        02:57:26","use_aqb":"no"}]}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['3582']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:01:36 GMT']
+      etag: [W/"ef879f508cbfd19e92db4d8ea5112980"]
+      expires: ['Tue, 10 May 2016 21:01:36 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=6j1frs6h5ffinnsae4r28madp0; path=/; secure; HttpOnly,
+        '_xsrf=fc922379068259d7380d9f72f4bd1c87%7C1462906896; expires=Tue, 17-May-2016
+          19:01:36 GMT; Max-Age=604800; path=/']
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+- request:
+    body: record_line=%E9%BB%98%E8%AE%A4&format=json&value=challengetoken&record_type=TXT&sub_domain=updated.testfull&record_id=189593272&domain_id=38280687
+    headers:
+      Accept: ['*/*']
+      Accept-Encoding: ['gzip, deflate']
+      Connection: [keep-alive]
+      Content-Length: ['199']
+      Content-Type: [application/x-www-form-urlencoded]
+      User-Agent: [python-requests/2.9.1]
+    method: POST
+    uri: https://dnsapi.cn/Record.Modify
+  response:
+    body: {string: !!python/unicode '{"status":{"code":"1","message":"Action completed
+        successful","created_at":"2016-05-11 03:01:48"},"record":{"id":189593272,"name":"updated.testfull","value":"challengetoken","status":"enable","weight":null}}'}
+    headers:
+      cache-control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
+      connection: [keep-alive]
+      content-length: ['207']
+      content-type: [text/html;charset=UTF-8]
+      date: ['Tue, 10 May 2016 19:01:48 GMT']
+      etag: [W/"acaa10d43fd8bef86347ac0ad4006ec5"]
+      expires: ['Tue, 10 May 2016 21:01:48 GMT']
+      pragma: [no-cache]
+      server: [nginx]
+      set-cookie: [DNSPODID=pqculiri4j43vesf59r224loj4; path=/; secure; HttpOnly,
+        '_xsrf=275e2a90d193b9ff39bbbb9e50c98736%7C1462906908; expires=Tue, 17-May-2016
+          19:01:48 GMT; Max-Age=604800; path=/']
+      transfer-encoding: [chunked]
+      x-ua-compatible: ['IE=Edge,chrome=1']
+    status: {code: 200, message: OK}
+version: 1
diff --git a/tests/providers/integration_tests.py b/tests/providers/integration_tests.py
--- a/tests/providers/integration_tests.py
+++ b/tests/providers/integration_tests.py
@@ -30,7 +30,7 @@ class IntegrationTests():
     # Provider.authenticate()
     ###########################################################################
     def test_Provider_authenticate(self):
-        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_authenticate.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters()):
+        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_authenticate.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters(), filter_post_data_parameters=self._filter_post_data_parameters()):
             provider = self.Provider({
                 'domain': self.domain,
                 'auth_username': self._auth_username(),
@@ -40,7 +40,7 @@ def test_Provider_authenticate(self):
             assert provider.domain_id is not None
 
     def test_Provider_authenticate_with_unmanaged_domain_should_fail(self):
-        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_authenticate_with_unmanaged_domain_should_fail.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters()):
+        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_authenticate_with_unmanaged_domain_should_fail.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters(), filter_post_data_parameters=self._filter_post_data_parameters()):
             provider = self.Provider({
                 'domain': 'thisisadomainidonotown.com',
                 'auth_username': self._auth_username(),
@@ -53,7 +53,7 @@ def test_Provider_authenticate_with_unmanaged_domain_should_fail(self):
     # Provider.create_record()
     ###########################################################################
     def test_Provider_when_calling_create_record_for_A_with_valid_name_and_content(self):
-        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_create_record_for_A_with_valid_name_and_content.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters()):
+        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_create_record_for_A_with_valid_name_and_content.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters(), filter_post_data_parameters=self._filter_post_data_parameters()):
             provider = self.Provider({
                 'domain': self.domain,
                 'auth_username': self._auth_username(),
@@ -63,7 +63,7 @@ def test_Provider_when_calling_create_record_for_A_with_valid_name_and_content(s
             assert provider.create_record('A','localhost','127.0.0.1')
 
     def test_Provider_when_calling_create_record_for_CNAME_with_valid_name_and_content(self):
-        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_create_record_for_CNAME_with_valid_name_and_content.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters()):
+        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_create_record_for_CNAME_with_valid_name_and_content.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters(), filter_post_data_parameters=self._filter_post_data_parameters()):
             provider = self.Provider({
                 'domain': self.domain,
                 'auth_username': self._auth_username(),
@@ -73,7 +73,7 @@ def test_Provider_when_calling_create_record_for_CNAME_with_valid_name_and_conte
             assert provider.create_record('CNAME','docs','docs.example.com')
 
     def test_Provider_when_calling_create_record_for_TXT_with_valid_name_and_content(self):
-        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_create_record_for_TXT_with_valid_name_and_content.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters()):
+        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_create_record_for_TXT_with_valid_name_and_content.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters(), filter_post_data_parameters=self._filter_post_data_parameters()):
             provider = self.Provider({
                 'domain': self.domain,
                 'auth_username': self._auth_username(),
@@ -83,7 +83,7 @@ def test_Provider_when_calling_create_record_for_TXT_with_valid_name_and_content
             assert provider.create_record('TXT','_acme-challenge.test','challengetoken')
 
     def test_Provider_when_calling_create_record_for_TXT_with_full_name_and_content(self):
-        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_create_record_for_TXT_with_full_name_and_content.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters()):
+        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_create_record_for_TXT_with_full_name_and_content.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters(), filter_post_data_parameters=self._filter_post_data_parameters()):
             provider = self.Provider({
                 'domain': self.domain,
                 'auth_username': self._auth_username(),
@@ -93,7 +93,7 @@ def test_Provider_when_calling_create_record_for_TXT_with_full_name_and_content(
             assert provider.create_record('TXT',"_acme-challenge.full.{0}".format(self.domain),'challengetoken')
 
     def test_Provider_when_calling_create_record_for_TXT_with_fqdn_name_and_content(self):
-        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_create_record_for_TXT_with_fqdn_name_and_content.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters()):
+        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_create_record_for_TXT_with_fqdn_name_and_content.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters(), filter_post_data_parameters=self._filter_post_data_parameters()):
             provider = self.Provider({
                 'domain': self.domain,
                 'auth_username': self._auth_username(),
@@ -106,7 +106,7 @@ def test_Provider_when_calling_create_record_for_TXT_with_fqdn_name_and_content(
     # Provider.list_records()
     ###########################################################################
     def test_Provider_when_calling_list_records_with_no_arguments_should_list_all(self):
-        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_list_records_with_no_arguments_should_list_all.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters()):
+        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_list_records_with_no_arguments_should_list_all.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters(), filter_post_data_parameters=self._filter_post_data_parameters()):
             provider = self.Provider({
                 'domain': self.domain,
                 'auth_username': self._auth_username(),
@@ -116,7 +116,7 @@ def test_Provider_when_calling_list_records_with_no_arguments_should_list_all(se
             assert isinstance(provider.list_records(), list)
 
     def test_Provider_when_calling_list_records_with_name_filter_should_return_record(self):
-        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_list_records_with_name_filter_should_return_record.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters()):
+        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_list_records_with_name_filter_should_return_record.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters(), filter_post_data_parameters=self._filter_post_data_parameters()):
             provider = self.Provider({
                 'domain': self.domain,
                 'auth_username': self._auth_username(),
@@ -131,7 +131,7 @@ def test_Provider_when_calling_list_records_with_name_filter_should_return_recor
             assert records[0]['name'] == 'random.test.{0}'.format(self.domain)
 
     def test_Provider_when_calling_list_records_with_full_name_filter_should_return_record(self):
-        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_list_records_with_full_name_filter_should_return_record.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters()):
+        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_list_records_with_full_name_filter_should_return_record.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters(), filter_post_data_parameters=self._filter_post_data_parameters()):
             provider = self.Provider({
                 'domain': self.domain,
                 'auth_username': self._auth_username(),
@@ -146,7 +146,7 @@ def test_Provider_when_calling_list_records_with_full_name_filter_should_return_
             assert records[0]['name'] == 'random.fulltest.{0}'.format(self.domain)
 
     def test_Provider_when_calling_list_records_with_fqdn_name_filter_should_return_record(self):
-        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_list_records_with_fqdn_name_filter_should_return_record.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters()):
+        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_list_records_with_fqdn_name_filter_should_return_record.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters(), filter_post_data_parameters=self._filter_post_data_parameters()):
             provider = self.Provider({
                 'domain': self.domain,
                 'auth_username': self._auth_username(),
@@ -162,7 +162,7 @@ def test_Provider_when_calling_list_records_with_fqdn_name_filter_should_return_
 
     @pytest.mark.skip(reason="not sure how to test empty list across multiple providers")
     def test_Provider_when_calling_list_records_should_return_empty_list_if_no_records_found(self):
-        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_list_records_should_return_empty_list_if_no_records_found.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters()):
+        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_list_records_should_return_empty_list_if_no_records_found.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters(), filter_post_data_parameters=self._filter_post_data_parameters()):
             provider = self.Provider({
                 'domain': self.domain,
                 'auth_username': self._auth_username(),
@@ -173,7 +173,7 @@ def test_Provider_when_calling_list_records_should_return_empty_list_if_no_recor
 
     @pytest.mark.skip(reason="not sure how to test filtering across multiple providers")
     def test_Provider_when_calling_list_records_with_arguments_should_filter_list(self):
-        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_list_records_with_arguments_should_filter_list.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters()):
+        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_list_records_with_arguments_should_filter_list.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters(), filter_post_data_parameters=self._filter_post_data_parameters()):
             provider = self.Provider({
                 'domain': self.domain,
                 'auth_username': self._auth_username(),
@@ -186,7 +186,7 @@ def test_Provider_when_calling_list_records_with_arguments_should_filter_list(se
     # Provider.update_record()
     ###########################################################################
     def test_Provider_when_calling_update_record_should_modify_record(self):
-        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_update_record_should_modify_record.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters()):
+        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_update_record_should_modify_record.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters(), filter_post_data_parameters=self._filter_post_data_parameters()):
             provider = self.Provider({
                 'domain': self.domain,
                 'auth_username': self._auth_username(),
@@ -198,7 +198,7 @@ def test_Provider_when_calling_update_record_should_modify_record(self):
             assert provider.update_record(records[0]['id'],'TXT','updated.test','challengetoken')
 
     def test_Provider_when_calling_update_record_with_full_name_should_modify_record(self):
-        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_update_record_with_full_name_should_modify_record.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters()):
+        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_update_record_with_full_name_should_modify_record.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters(), filter_post_data_parameters=self._filter_post_data_parameters()):
             provider = self.Provider({
                 'domain': self.domain,
                 'auth_username': self._auth_username(),
@@ -210,7 +210,7 @@ def test_Provider_when_calling_update_record_with_full_name_should_modify_record
             assert provider.update_record(records[0]['id'],'TXT','updated.testfull.{0}'.format(self.domain),'challengetoken')
 
     def test_Provider_when_calling_update_record_with_fqdn_name_should_modify_record(self):
-        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_update_record_with_fqdn_name_should_modify_record.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters()):
+        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_update_record_with_fqdn_name_should_modify_record.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters(), filter_post_data_parameters=self._filter_post_data_parameters()):
             provider = self.Provider({
                 'domain': self.domain,
                 'auth_username': self._auth_username(),
@@ -225,7 +225,7 @@ def test_Provider_when_calling_update_record_with_fqdn_name_should_modify_record
     # Provider.delete_record()
     ###########################################################################
     def test_Provider_when_calling_delete_record_by_identifier_should_remove_record(self):
-        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_delete_record_by_identifier_should_remove_record.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters()):
+        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_delete_record_by_identifier_should_remove_record.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters(), filter_post_data_parameters=self._filter_post_data_parameters()):
             provider = self.Provider({
                 'domain': self.domain,
                 'auth_username': self._auth_username(),
@@ -239,7 +239,7 @@ def test_Provider_when_calling_delete_record_by_identifier_should_remove_record(
             assert len(records) == 0
 
     def test_Provider_when_calling_delete_record_by_filter_should_remove_record(self):
-        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_delete_record_by_filter_should_remove_record.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters()):
+        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_delete_record_by_filter_should_remove_record.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters(), filter_post_data_parameters=self._filter_post_data_parameters()):
             provider = self.Provider({
                 'domain': self.domain,
                 'auth_username': self._auth_username(),
@@ -252,7 +252,7 @@ def test_Provider_when_calling_delete_record_by_filter_should_remove_record(self
             assert len(records) == 0
 
     def test_Provider_when_calling_delete_record_by_filter_with_full_name_should_remove_record(self):
-        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_delete_record_by_filter_with_full_name_should_remove_record.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters()):
+        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_delete_record_by_filter_with_full_name_should_remove_record.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters(), filter_post_data_parameters=self._filter_post_data_parameters()):
             provider = self.Provider({
                 'domain': self.domain,
                 'auth_username': self._auth_username(),
@@ -265,7 +265,7 @@ def test_Provider_when_calling_delete_record_by_filter_with_full_name_should_rem
             assert len(records) == 0
 
     def test_Provider_when_calling_delete_record_by_filter_with_fqdn_name_should_remove_record(self):
-        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_delete_record_by_filter_with_fqdn_name_should_remove_record.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters()):
+        with provider_vcr.use_cassette(self._cassette_path('IntegrationTests/test_Provider_when_calling_delete_record_by_filter_with_fqdn_name_should_remove_record.yaml'), filter_headers=self._filter_headers(), filter_query_parameters=self._filter_query_parameters(), filter_post_data_parameters=self._filter_post_data_parameters()):
             provider = self.Provider({
                 'domain': self.domain,
                 'auth_username': self._auth_username(),
@@ -294,5 +294,7 @@ def _filter_headers(self):
         return []
     def _filter_query_parameters(self):
         return []
+    def _filter_post_data_parameters(self):
+        return []
 
     provider_opts = {}
\ No newline at end of file
diff --git a/tests/providers/test_dnspod.py b/tests/providers/test_dnspod.py
new file mode 100644
--- /dev/null
+++ b/tests/providers/test_dnspod.py
@@ -0,0 +1,16 @@
+# Test for one implementation of the interface
+from lexicon.providers.dnspod 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 = 'dnspod'
+    domain = 'capsulecd.com'
+    def _filter_post_data_parameters(self):
+        return ['login_token']