Repository: halcy/Mastodon.py

Issue:
Call to domain_blocks is broken, because returning "rel"="pref" does not work
I've a blocked domain in my account and a call to 

~~~python
mastodon.domain_blocks()
~~~

runs in an error:

~~~
Traceback (most recent call last):
  File "C:\Users\aritt\AppData\Roaming\JetBrains\IdeaIC2021.3\plugins\python-ce\helpers\pydev\pydevd.py", line 1483, in _exec
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "C:\Users\aritt\AppData\Roaming\JetBrains\IdeaIC2021.3\plugins\python-ce\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "C:/DevTools/Core/gitrepo/mastodon-playground/mb-block.py", line 54, in <module>
    dump_blocks(mastodon.domain_blocks())
  File "C:\DevTools\Core\Python39\lib\site-packages\decorator.py", line 232, in fun
    return caller(func, *(extras + args), **kw)
  File "C:\DevTools\Core\Python39\lib\site-packages\mastodon\Mastodon.py", line 102, in wrapper
    return function(self, *args, **kwargs)
  File "C:\DevTools\Core\Python39\lib\site-packages\mastodon\Mastodon.py", line 1542, in domain_blocks
    return self.__api_request('GET', '/api/v1/domain_blocks', params)
  File "C:\DevTools\Core\Python39\lib\site-packages\mastodon\Mastodon.py", line 3489, in __api_request
    response[0]._pagination_prev = prev_params
AttributeError: 'str' object has no attribute '_pagination_prev'
python-BaseException
~~~

parse_header_links resolves the response with this value:

~~~
[{'url': 'https://social.tchncs.de/api/v1/domain_blocks?since_id=2922', 'rel': 'prev'}]
~~~

The "rel: prev " handling try to manage the pagination, but the response does not contain a pagination object (it's a plain JSON List of Strings):

~~~json
["truthsocial.co.in"]
~~~

So, the call of:

~~~python
response[0]._pagination_prev = prev_params
~~~

... raise `AttributeError: 'str' object has no attribute '_pagination_prev'`



Discussion:

Patch:
diff --git a/mastodon/Mastodon.py b/mastodon/Mastodon.py
index 8b0afb3..0922a6f 100644
--- a/mastodon/Mastodon.py
+++ b/mastodon/Mastodon.py
@@ -120,10 +120,27 @@ class AttribAccessDict(dict):
             raise AttributeError("Attribute-style access is read only")
         super(AttribAccessDict, self).__setattr__(attr, val)
 
+
 ###
-# The actual Mastodon class
+# List helper class.
+# Defined at top level so it can be pickled.
 ###
+class AttribAccessList(list):
+    def __getattr__(self, attr):
+        if attr in self:
+            return self[attr]
+        else:
+            raise AttributeError("Attribute not found: " + str(attr))
+
+    def __setattr__(self, attr, val):
+        if attr in self:
+            raise AttributeError("Attribute-style access is read only")
+        super(AttribAccessList, self).__setattr__(attr, val)
+
 
+###
+# The actual Mastodon class
+###
 class Mastodon:
     """
     Thorough and easy to use Mastodon
@@ -3050,8 +3067,8 @@ class Mastodon:
         Returns the next page or None if no further data is available.
         """
         if isinstance(previous_page, list) and len(previous_page) != 0:
-            if hasattr(previous_page[-1], '_pagination_next'):
-                params = copy.deepcopy(previous_page[-1]._pagination_next)
+            if hasattr(previous_page, '_pagination_next'):
+                params = copy.deepcopy(previous_page._pagination_next)
             else:
                 return None
         else:
@@ -3074,8 +3091,8 @@ class Mastodon:
         Returns the previous page or None if no further data is available.
         """
         if isinstance(next_page, list) and len(next_page) != 0:
-            if hasattr(next_page[0], '_pagination_prev'):
-                params = copy.deepcopy(next_page[0]._pagination_prev)
+            if hasattr(next_page, '_pagination_prev'):
+                params = copy.deepcopy(next_page._pagination_prev)
             else:
                 return None
         else:
@@ -3453,6 +3470,7 @@ class Mastodon:
             if isinstance(response, list) and \
                     'Link' in response_object.headers and \
                     response_object.headers['Link'] != "":
+                response = AttribAccessList(response)
                 tmp_urls = requests.utils.parse_header_links(
                     response_object.headers['Link'].rstrip('>').replace('>,<', ',<'))
                 for url in tmp_urls:
@@ -3477,7 +3495,12 @@ class Mastodon:
                                 del next_params['since_id']
                             if "min_id" in next_params:
                                 del next_params['min_id']
-                            response[-1]._pagination_next = next_params
+                            response._pagination_next = next_params
+
+                            # Maybe other API users rely on the pagination info in the last item
+                            # Will be removed in future
+                            if isinstance(response[-1], AttribAccessDict):
+                                response[-1]._pagination_next = next_params
 
                     if url['rel'] == 'prev':
                         # Be paranoid and extract since_id or min_id specifically
@@ -3496,8 +3519,13 @@ class Mastodon:
                                 prev_params['since_id'] = since_id
                             if "max_id" in prev_params:
                                 del prev_params['max_id']
-                            response[0]._pagination_prev = prev_params
-                            
+                            response._pagination_prev = prev_params
+
+                            # Maybe other API users rely on the pagination info in the first item
+                            # Will be removed in future
+                            if isinstance(response[0], AttribAccessDict):
+                                response[0]._pagination_prev = prev_params
+
                         # New and fantastico (post-2.6.0): min_id pagination
                         matchgroups = re.search(r"[?&]min_id=([^&]+)", prev_url)
                         if matchgroups:
@@ -3511,7 +3539,12 @@ class Mastodon:
                                 prev_params['min_id'] = min_id
                             if "max_id" in prev_params:
                                 del prev_params['max_id']
-                            response[0]._pagination_prev = prev_params
+                            response._pagination_prev = prev_params
+
+                            # Maybe other API users rely on the pagination info in the first item
+                            # Will be removed in future
+                            if isinstance(response[0], AttribAccessDict):
+                                response[0]._pagination_prev = prev_params
 
         return response
 


Test patch:
diff --git a/tests/cassettes/test_domain_blocks.yaml b/tests/cassettes/test_domain_blocks.yaml
index 8889bb1..041541e 100644
--- a/tests/cassettes/test_domain_blocks.yaml
+++ b/tests/cassettes/test_domain_blocks.yaml
@@ -10,10 +10,13 @@ interactions:
     method: GET
     uri: http://localhost:3000/api/v1/domain_blocks
   response:
-    body: {string: '[]'}
+    body: {string: '["example.com"]'}
     headers:
       Cache-Control: ['no-cache, no-store']
       Content-Type: [application/json; charset=utf-8]
+      Link: ['<http://localhost:3000/api/v1/domain_blocks?max_id=10023>;
+          rel="next", <http://localhost:3000/api/v1/domain_blocks?min_id=10021>;
+          rel="prev"']
       Referrer-Policy: [strict-origin-when-cross-origin]
       Transfer-Encoding: [chunked]
       Vary: ['Accept-Encoding, Origin']
@@ -24,6 +27,6 @@ interactions:
       X-Request-Id: [79ec8c37-a374-47e4-a698-a8b8511ca20f]
       X-Runtime: ['0.098492']
       X-XSS-Protection: [1; mode=block]
-      content-length: ['2']
+      content-length: ['15']
     status: {code: 200, message: OK}
 version: 1
diff --git a/tests/cassettes/test_fetch_next_previous_from_pagination_info_oldstyle.yaml b/tests/cassettes/test_fetch_next_previous_from_pagination_info_oldstyle.yaml
new file mode 100644
index 0000000..7038e45
--- /dev/null
+++ b/tests/cassettes/test_fetch_next_previous_from_pagination_info_oldstyle.yaml
@@ -0,0 +1,749 @@
+interactions:
+  - request:
+      body: null
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        User-Agent: [python-requests/2.18.4]
+      method: GET
+      uri: http://localhost:3000/api/v1/accounts/verify_credentials
+    response:
+      body: {string: '{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":1,"last_status_at":"2020-02-22","source":{"privacy":"public","sensitive":false,"language":null,"note":"","fields":[],"follow_requests_count":0},"emojis":[],"fields":[]}'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [ae32b16c-712a-4109-88b9-392036a21925]
+        X-Runtime: ['0.651439']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['745']
+      status: {code: 200, message: OK}
+  - request:
+      body: status=Toot+number+0%21
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        Content-Length: ['23']
+        Content-Type: [application/x-www-form-urlencoded]
+        User-Agent: [python-requests/2.18.4]
+      method: POST
+      uri: http://localhost:3000/api/v1/statuses
+    response:
+      body: {string: '{"id":"103704149189751466","created_at":"2020-02-22T19:28:57.717Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149189751466","url":"http://localhost/@mastodonpy_test/103704149189751466","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 0!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":2,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [f17c9f1b-ccda-4ffb-8677-931a2bcd778b]
+        X-Runtime: ['0.801649']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['1329']
+      status: {code: 200, message: OK}
+  - request:
+      body: status=Toot+number+1%21
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        Content-Length: ['23']
+        Content-Type: [application/x-www-form-urlencoded]
+        User-Agent: [python-requests/2.18.4]
+      method: POST
+      uri: http://localhost:3000/api/v1/statuses
+    response:
+      body: {string: '{"id":"103704149240204204","created_at":"2020-02-22T19:28:58.181Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149240204204","url":"http://localhost/@mastodonpy_test/103704149240204204","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 1!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":3,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [d3af53b9-a9f0-41ce-b0c4-1a69b7e7f18a]
+        X-Runtime: ['0.211565']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['1329']
+      status: {code: 200, message: OK}
+  - request:
+      body: status=Toot+number+2%21
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        Content-Length: ['23']
+        Content-Type: [application/x-www-form-urlencoded]
+        User-Agent: [python-requests/2.18.4]
+      method: POST
+      uri: http://localhost:3000/api/v1/statuses
+    response:
+      body: {string: '{"id":"103704149255716248","created_at":"2020-02-22T19:28:58.413Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149255716248","url":"http://localhost/@mastodonpy_test/103704149255716248","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 2!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":4,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [dc3327da-8fc5-46c6-8759-8953392d450d]
+        X-Runtime: ['0.211682']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['1329']
+      status: {code: 200, message: OK}
+  - request:
+      body: status=Toot+number+3%21
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        Content-Length: ['23']
+        Content-Type: [application/x-www-form-urlencoded]
+        User-Agent: [python-requests/2.18.4]
+      method: POST
+      uri: http://localhost:3000/api/v1/statuses
+    response:
+      body: {string: '{"id":"103704149270849591","created_at":"2020-02-22T19:28:58.643Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149270849591","url":"http://localhost/@mastodonpy_test/103704149270849591","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 3!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":5,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [3b34502f-358b-4f69-a8a7-b72cee3056a0]
+        X-Runtime: ['0.205497']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['1329']
+      status: {code: 200, message: OK}
+  - request:
+      body: status=Toot+number+4%21
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        Content-Length: ['23']
+        Content-Type: [application/x-www-form-urlencoded]
+        User-Agent: [python-requests/2.18.4]
+      method: POST
+      uri: http://localhost:3000/api/v1/statuses
+    response:
+      body: {string: '{"id":"103704149285153724","created_at":"2020-02-22T19:28:58.863Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149285153724","url":"http://localhost/@mastodonpy_test/103704149285153724","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 4!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":6,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [49cc87eb-ae66-4bbb-8fca-79277c82b4b6]
+        X-Runtime: ['0.214698']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['1329']
+      status: {code: 200, message: OK}
+  - request:
+      body: status=Toot+number+5%21
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        Content-Length: ['23']
+        Content-Type: [application/x-www-form-urlencoded]
+        User-Agent: [python-requests/2.18.4]
+      method: POST
+      uri: http://localhost:3000/api/v1/statuses
+    response:
+      body: {string: '{"id":"103704149300069225","created_at":"2020-02-22T19:28:59.095Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149300069225","url":"http://localhost/@mastodonpy_test/103704149300069225","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 5!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":7,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [c0aed740-e674-4ca5-8e98-f4cba0044418]
+        X-Runtime: ['0.225727']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['1329']
+      status: {code: 200, message: OK}
+  - request:
+      body: status=Toot+number+6%21
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        Content-Length: ['23']
+        Content-Type: [application/x-www-form-urlencoded]
+        User-Agent: [python-requests/2.18.4]
+      method: POST
+      uri: http://localhost:3000/api/v1/statuses
+    response:
+      body: {string: '{"id":"103704149316561035","created_at":"2020-02-22T19:28:59.341Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149316561035","url":"http://localhost/@mastodonpy_test/103704149316561035","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 6!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":8,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [93854c13-4b4c-420e-a825-c65efae49785]
+        X-Runtime: ['0.251071']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['1329']
+      status: {code: 200, message: OK}
+  - request:
+      body: status=Toot+number+7%21
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        Content-Length: ['23']
+        Content-Type: [application/x-www-form-urlencoded]
+        User-Agent: [python-requests/2.18.4]
+      method: POST
+      uri: http://localhost:3000/api/v1/statuses
+    response:
+      body: {string: '{"id":"103704149334172751","created_at":"2020-02-22T19:28:59.612Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149334172751","url":"http://localhost/@mastodonpy_test/103704149334172751","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 7!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":9,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [31c48d09-3509-4a99-ba24-5c08cc689296]
+        X-Runtime: ['0.203192']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['1329']
+      status: {code: 200, message: OK}
+  - request:
+      body: status=Toot+number+8%21
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        Content-Length: ['23']
+        Content-Type: [application/x-www-form-urlencoded]
+        User-Agent: [python-requests/2.18.4]
+      method: POST
+      uri: http://localhost:3000/api/v1/statuses
+    response:
+      body: {string: '{"id":"103704149348344165","created_at":"2020-02-22T19:28:59.827Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149348344165","url":"http://localhost/@mastodonpy_test/103704149348344165","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 8!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":10,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [24ce9bfd-9f86-4a6a-b889-998c58c137f2]
+        X-Runtime: ['0.223554']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['1330']
+      status: {code: 200, message: OK}
+  - request:
+      body: status=Toot+number+9%21
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        Content-Length: ['23']
+        Content-Type: [application/x-www-form-urlencoded]
+        User-Agent: [python-requests/2.18.4]
+      method: POST
+      uri: http://localhost:3000/api/v1/statuses
+    response:
+      body: {string: '{"id":"103704149365440398","created_at":"2020-02-22T19:29:00.089Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149365440398","url":"http://localhost/@mastodonpy_test/103704149365440398","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 9!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":11,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [98577765-f52d-4994-a792-36c9eef95f62]
+        X-Runtime: ['0.228954']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['1330']
+      status: {code: 200, message: OK}
+  - request:
+      body: null
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        User-Agent: [python-requests/2.18.4]
+      method: GET
+      uri: http://localhost:3000/api/v1/accounts/1234567890123456/statuses?limit=5
+    response:
+      body: {string: '[{"id":"103704149365440398","created_at":"2020-02-22T19:29:00.089Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149365440398","url":"http://localhost/@mastodonpy_test/103704149365440398","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 9!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":11,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null},{"id":"103704149348344165","created_at":"2020-02-22T19:28:59.827Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149348344165","url":"http://localhost/@mastodonpy_test/103704149348344165","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 8!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":11,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null},{"id":"103704149334172751","created_at":"2020-02-22T19:28:59.612Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149334172751","url":"http://localhost/@mastodonpy_test/103704149334172751","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 7!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":11,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null},{"id":"103704149316561035","created_at":"2020-02-22T19:28:59.341Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149316561035","url":"http://localhost/@mastodonpy_test/103704149316561035","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 6!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":11,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null},{"id":"103704149300069225","created_at":"2020-02-22T19:28:59.095Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149300069225","url":"http://localhost/@mastodonpy_test/103704149300069225","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 5!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":11,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}]'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Link: ['<http://localhost:3000/api/v1/accounts/1234567890123456/statuses?limit=5&max_id=103704149300069225>;
+          rel="next", <http://localhost:3000/api/v1/accounts/1234567890123456/statuses?limit=5&min_id=103704149365440398>;
+          rel="prev"']
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [4960311a-9e9a-4722-9417-5a34c30c805b]
+        X-Runtime: ['0.338488']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['6656']
+      status: {code: 200, message: OK}
+  - request:
+      body: null
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        User-Agent: [python-requests/2.18.4]
+      method: GET
+      uri: http://localhost:3000/api/v1/accounts/1234567890123456/statuses?limit=5&max_id=103704149300069225
+    response:
+      body: {string: '[{"id":"103704149285153724","created_at":"2020-02-22T19:28:58.863Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149285153724","url":"http://localhost/@mastodonpy_test/103704149285153724","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 4!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":11,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null},{"id":"103704149270849591","created_at":"2020-02-22T19:28:58.643Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149270849591","url":"http://localhost/@mastodonpy_test/103704149270849591","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 3!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":11,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null},{"id":"103704149255716248","created_at":"2020-02-22T19:28:58.413Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149255716248","url":"http://localhost/@mastodonpy_test/103704149255716248","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 2!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":11,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null},{"id":"103704149240204204","created_at":"2020-02-22T19:28:58.181Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149240204204","url":"http://localhost/@mastodonpy_test/103704149240204204","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 1!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":11,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null},{"id":"103704149189751466","created_at":"2020-02-22T19:28:57.717Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149189751466","url":"http://localhost/@mastodonpy_test/103704149189751466","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 0!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":11,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}]'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Link: ['<http://localhost:3000/api/v1/accounts/1234567890123456/statuses?limit=5&max_id=103704149189751466>;
+          rel="next", <http://localhost:3000/api/v1/accounts/1234567890123456/statuses?limit=5&min_id=103704149285153724>;
+          rel="prev"']
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [aa025632-b316-43c0-afc5-243f62d2b6b8]
+        X-Runtime: ['0.201975']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['6656']
+      status: {code: 200, message: OK}
+  - request:
+      body: null
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        User-Agent: [python-requests/2.18.4]
+      method: GET
+      uri: http://localhost:3000/api/v1/accounts/1234567890123456/statuses?limit=5&min_id=103704149285153724
+    response:
+      body: {string: '[{"id":"103704149365440398","created_at":"2020-02-22T19:29:00.089Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149365440398","url":"http://localhost/@mastodonpy_test/103704149365440398","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 9!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":11,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null},{"id":"103704149348344165","created_at":"2020-02-22T19:28:59.827Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149348344165","url":"http://localhost/@mastodonpy_test/103704149348344165","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 8!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":11,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null},{"id":"103704149334172751","created_at":"2020-02-22T19:28:59.612Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149334172751","url":"http://localhost/@mastodonpy_test/103704149334172751","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 7!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":11,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null},{"id":"103704149316561035","created_at":"2020-02-22T19:28:59.341Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149316561035","url":"http://localhost/@mastodonpy_test/103704149316561035","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 6!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":11,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null},{"id":"103704149300069225","created_at":"2020-02-22T19:28:59.095Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149300069225","url":"http://localhost/@mastodonpy_test/103704149300069225","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"\u003cp\u003eToot
+        number 5!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
+        test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":11,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}]'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Link: ['<http://localhost:3000/api/v1/accounts/1234567890123456/statuses?limit=5&max_id=103704149300069225>;
+          rel="next", <http://localhost:3000/api/v1/accounts/1234567890123456/statuses?limit=5&min_id=103704149365440398>;
+          rel="prev"']
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [03a7b3a0-09b2-4281-833e-d5885806890e]
+        X-Runtime: ['0.169965']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['6656']
+      status: {code: 200, message: OK}
+  - request:
+      body: null
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        Content-Length: ['0']
+        User-Agent: [python-requests/2.18.4]
+      method: DELETE
+      uri: http://localhost:3000/api/v1/statuses/103704149189751466
+    response:
+      body: {string: '{"id":"103704149189751466","created_at":"2020-02-22T19:28:57.717Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149189751466","url":"http://localhost/@mastodonpy_test/103704149189751466","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"text":"Toot
+        number 0!","reblog":null,"application":{"name":"Mastodon.py test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":11,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [c9121201-0be7-4c73-bdce-884e21d969d4]
+        X-Runtime: ['0.157991']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['1300']
+      status: {code: 200, message: OK}
+  - request:
+      body: null
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        Content-Length: ['0']
+        User-Agent: [python-requests/2.18.4]
+      method: DELETE
+      uri: http://localhost:3000/api/v1/statuses/103704149240204204
+    response:
+      body: {string: '{"id":"103704149240204204","created_at":"2020-02-22T19:28:58.181Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149240204204","url":"http://localhost/@mastodonpy_test/103704149240204204","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"text":"Toot
+        number 1!","reblog":null,"application":{"name":"Mastodon.py test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":10,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [e2df2022-af35-41e7-ab48-c888b17fb266]
+        X-Runtime: ['0.205063']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['1300']
+      status: {code: 200, message: OK}
+  - request:
+      body: null
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        Content-Length: ['0']
+        User-Agent: [python-requests/2.18.4]
+      method: DELETE
+      uri: http://localhost:3000/api/v1/statuses/103704149255716248
+    response:
+      body: {string: '{"id":"103704149255716248","created_at":"2020-02-22T19:28:58.413Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149255716248","url":"http://localhost/@mastodonpy_test/103704149255716248","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"text":"Toot
+        number 2!","reblog":null,"application":{"name":"Mastodon.py test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":9,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [cd3f1791-e612-445c-853a-d1b49229fdc7]
+        X-Runtime: ['0.173011']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['1299']
+      status: {code: 200, message: OK}
+  - request:
+      body: null
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        Content-Length: ['0']
+        User-Agent: [python-requests/2.18.4]
+      method: DELETE
+      uri: http://localhost:3000/api/v1/statuses/103704149270849591
+    response:
+      body: {string: '{"id":"103704149270849591","created_at":"2020-02-22T19:28:58.643Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149270849591","url":"http://localhost/@mastodonpy_test/103704149270849591","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"text":"Toot
+        number 3!","reblog":null,"application":{"name":"Mastodon.py test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":8,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [86e29869-c84c-4bda-ba30-cf3b7c047351]
+        X-Runtime: ['0.162408']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['1299']
+      status: {code: 200, message: OK}
+  - request:
+      body: null
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        Content-Length: ['0']
+        User-Agent: [python-requests/2.18.4]
+      method: DELETE
+      uri: http://localhost:3000/api/v1/statuses/103704149285153724
+    response:
+      body: {string: '{"id":"103704149285153724","created_at":"2020-02-22T19:28:58.863Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149285153724","url":"http://localhost/@mastodonpy_test/103704149285153724","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"text":"Toot
+        number 4!","reblog":null,"application":{"name":"Mastodon.py test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":7,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [4c6c6433-9a62-4b28-ad17-98c12279e9da]
+        X-Runtime: ['0.126905']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['1299']
+      status: {code: 200, message: OK}
+  - request:
+      body: null
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        Content-Length: ['0']
+        User-Agent: [python-requests/2.18.4]
+      method: DELETE
+      uri: http://localhost:3000/api/v1/statuses/103704149300069225
+    response:
+      body: {string: '{"id":"103704149300069225","created_at":"2020-02-22T19:28:59.095Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149300069225","url":"http://localhost/@mastodonpy_test/103704149300069225","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"text":"Toot
+        number 5!","reblog":null,"application":{"name":"Mastodon.py test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":6,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [a4a8ad1a-7b70-4322-b524-34c7a6966505]
+        X-Runtime: ['0.130927']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['1299']
+      status: {code: 200, message: OK}
+  - request:
+      body: null
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        Content-Length: ['0']
+        User-Agent: [python-requests/2.18.4]
+      method: DELETE
+      uri: http://localhost:3000/api/v1/statuses/103704149316561035
+    response:
+      body: {string: '{"id":"103704149316561035","created_at":"2020-02-22T19:28:59.341Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149316561035","url":"http://localhost/@mastodonpy_test/103704149316561035","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"text":"Toot
+        number 6!","reblog":null,"application":{"name":"Mastodon.py test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":5,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [2a19b9cb-7487-4c3f-9b5a-f8796526945b]
+        X-Runtime: ['0.137676']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['1299']
+      status: {code: 200, message: OK}
+  - request:
+      body: null
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        Content-Length: ['0']
+        User-Agent: [python-requests/2.18.4]
+      method: DELETE
+      uri: http://localhost:3000/api/v1/statuses/103704149334172751
+    response:
+      body: {string: '{"id":"103704149334172751","created_at":"2020-02-22T19:28:59.612Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149334172751","url":"http://localhost/@mastodonpy_test/103704149334172751","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"text":"Toot
+        number 7!","reblog":null,"application":{"name":"Mastodon.py test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":4,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [7a8d07ec-da26-4554-8011-46a70cf4c356]
+        X-Runtime: ['0.138911']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['1299']
+      status: {code: 200, message: OK}
+  - request:
+      body: null
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        Content-Length: ['0']
+        User-Agent: [python-requests/2.18.4]
+      method: DELETE
+      uri: http://localhost:3000/api/v1/statuses/103704149348344165
+    response:
+      body: {string: '{"id":"103704149348344165","created_at":"2020-02-22T19:28:59.827Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149348344165","url":"http://localhost/@mastodonpy_test/103704149348344165","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"text":"Toot
+        number 8!","reblog":null,"application":{"name":"Mastodon.py test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":3,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [4cdbde9e-b14a-405e-840e-d5ebac69f1a6]
+        X-Runtime: ['0.143361']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['1299']
+      status: {code: 200, message: OK}
+  - request:
+      body: null
+      headers:
+        Accept: ['*/*']
+        Accept-Encoding: ['gzip, deflate']
+        Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+        Connection: [keep-alive]
+        Content-Length: ['0']
+        User-Agent: [python-requests/2.18.4]
+      method: DELETE
+      uri: http://localhost:3000/api/v1/statuses/103704149365440398
+    response:
+      body: {string: '{"id":"103704149365440398","created_at":"2020-02-22T19:29:00.089Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"ja","uri":"http://localhost/users/mastodonpy_test/statuses/103704149365440398","url":"http://localhost/@mastodonpy_test/103704149365440398","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"text":"Toot
+        number 9!","reblog":null,"application":{"name":"Mastodon.py test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"","locked":false,"bot":false,"discoverable":false,"group":false,"created_at":"2020-02-22T20:26:54.402Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@mastodonpy_test","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":2,"last_status_at":"2020-02-22","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null}'}
+      headers:
+        Cache-Control: ['no-cache, no-store']
+        Content-Type: [application/json; charset=utf-8]
+        Referrer-Policy: [strict-origin-when-cross-origin]
+        Transfer-Encoding: [chunked]
+        Vary: ['Accept-Encoding, Origin']
+        X-Content-Type-Options: [nosniff]
+        X-Download-Options: [noopen]
+        X-Frame-Options: [SAMEORIGIN]
+        X-Permitted-Cross-Domain-Policies: [none]
+        X-Request-Id: [41b9b30e-23fa-4929-a1a2-417ae0d28b48]
+        X-Runtime: ['0.130683']
+        X-XSS-Protection: [1; mode=block]
+        content-length: ['1299']
+      status: {code: 200, message: OK}
+version: 1
diff --git a/tests/test_pagination.py b/tests/test_pagination.py
index 72ac06e..9f26140 100644
--- a/tests/test_pagination.py
+++ b/tests/test_pagination.py
@@ -36,6 +36,17 @@ def test_fetch_next_previous(api):
 
 @pytest.mark.vcr()
 def test_fetch_next_previous_from_pagination_info(api):
+    account = api.account_verify_credentials()
+    with many_statuses(api):
+        statuses = api.account_statuses(account['id'], limit=5)
+        next_statuses = api.fetch_next(statuses._pagination_next)
+        assert next_statuses
+        previous_statuses = api.fetch_previous(next_statuses._pagination_prev)
+        assert previous_statuses
+
+@pytest.mark.vcr()
+def test_fetch_next_previous_from_pagination_info_oldstyle(api):
+    # Old style compatibility mode. The storage in the list items is not anymore internally used.
     account = api.account_verify_credentials()
     with many_statuses(api):
         statuses = api.account_statuses(account['id'], limit=5)
@@ -59,6 +70,17 @@ def test_fetch_next_previous_from_pagination_info_old_pagination(api):
     with vcr.use_cassette('test_fetch_next_previous_from_pagination_info.yaml', cassette_library_dir='tests/cassettes_old_pagination', record_mode='none'):
         account = api.account_verify_credentials()
         
+        with many_statuses(api):
+            statuses = api.account_statuses(account['id'], limit=5)
+            next_statuses = api.fetch_next(statuses._pagination_next)
+            assert next_statuses
+            previous_statuses = api.fetch_previous(next_statuses._pagination_prev)
+            assert previous_statuses
+
+    # Old style compatibility mode. The storage in the list items is not anymore internally used.
+    with vcr.use_cassette('test_fetch_next_previous_from_pagination_info.yaml', cassette_library_dir='tests/cassettes_old_pagination', record_mode='none'):
+        account = api.account_verify_credentials()
+
         with many_statuses(api):
             statuses = api.account_statuses(account['id'], limit=5)
             next_statuses = api.fetch_next(statuses[-1]._pagination_next)
@@ -86,5 +108,9 @@ def test_link_headers(api):
     })
 
     resp = api.timeline_hashtag(UNLIKELY_HASHTAG)
+    assert resp._pagination_next['max_id'] == _id
+    assert resp._pagination_prev['since_id'] == _id
+
+    # Old style compatibility mode. The storage in the list items is not anymore internally used.
     assert resp[0]._pagination_next['max_id'] == _id
-    assert resp[0]._pagination_prev['since_id'] == _id
+    assert resp[0]._pagination_prev['since_id'] == _id
\ No newline at end of file