From 3864bbe0859e6c010a3a796467fd48d896734644 Mon Sep 17 00:00:00 2001
From: Lorenz Diener
Date: Sun, 6 May 2018 02:00:18 +0200
Subject: [PATCH] More streaming tests
---
tests/cassettes/test_stream_user.yaml | 100 ++++++-----
tests/cassettes/test_stream_user_local.yaml | 178 ++++++++++++++++++++
tests/test_streaming.py | 54 +++++-
3 files changed, 284 insertions(+), 48 deletions(-)
create mode 100644 tests/cassettes/test_stream_user_local.yaml
diff --git a/tests/cassettes/test_stream_user.yaml b/tests/cassettes/test_stream_user.yaml
index eb378d2..52174df 100644
--- a/tests/cassettes/test_stream_user.yaml
+++ b/tests/cassettes/test_stream_user.yaml
@@ -10,17 +10,17 @@ interactions:
method: GET
uri: http://localhost:3000/api/v1/instance/
response:
- body: {string: '{"uri":"localhost:3000","title":"Mastodon","description":"","email":"","version":"2.3.3","urls":{"streaming_api":"ws://localhost:4000"},"stats":{"user_count":2,"status_count":163,"domain_count":0},"thumbnail":"http://localhost:3000/packs/preview.jpg","languages":["en"],"contact_account":null}'}
+ body: {string: '{"uri":"localhost:3000","title":"Mastodon","description":"","email":"","version":"2.3.3","urls":{"streaming_api":"ws://localhost:4000"},"stats":{"user_count":2,"status_count":171,"domain_count":0},"thumbnail":"http://localhost:3000/packs/preview.jpg","languages":["en"],"contact_account":null}'}
headers:
Cache-Control: ['max-age=0, private, must-revalidate']
Content-Type: [application/json; charset=utf-8]
- ETag: [W/"2cc4eba842d06668a5e9f36dd5e75e0b"]
+ ETag: [W/"0283a67545a9e43efc083c8db0db67d5"]
Transfer-Encoding: [chunked]
Vary: ['Accept-Encoding, Origin']
X-Content-Type-Options: [nosniff]
X-Frame-Options: [SAMEORIGIN]
- X-Request-Id: [58fc9460-3f90-4bdc-bfae-97b4792cdf72]
- X-Runtime: ['0.030782']
+ X-Request-Id: [20bc305c-8462-4fba-bdac-4e613388a8f7]
+ X-Runtime: ['0.037274']
X-XSS-Protection: [1; mode=block]
content-length: ['293']
status: {code: 200, message: OK}
@@ -37,21 +37,21 @@ interactions:
method: POST
uri: http://localhost:3000/api/v1/statuses
response:
- body: {string: '{"id":"99979315699876567","created_at":"2018-05-05T23:34:48.888Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost:3000/users/mastodonpy_test/statuses/99979315699876567","content":"\u003cp\u003eonly
- real cars respond.\u003c/p\u003e","url":"http://localhost:3000/@mastodonpy_test/99979315699876567","reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"pinned":false,"reblog":null,"application":{"name":"Mastodon.py
+ body: {string: '{"id":"99979409266681372","created_at":"2018-05-05T23:58:36.604Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost:3000/users/mastodonpy_test/statuses/99979409266681372","content":"\u003cp\u003eonly
+ real cars respond.\u003c/p\u003e","url":"http://localhost:3000/@mastodonpy_test/99979409266681372","reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"pinned":false,"reblog":null,"application":{"name":"Mastodon.py
test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"John
Lennon","locked":true,"created_at":"2018-04-18T20:04:06.511Z","note":"\u003cp\u003eI
- walk funny\u003c/p\u003e","url":"http://localhost:3000/@mastodonpy_test","avatar":"http://localhost:3000/system/accounts/avatars/123/456/789/012/345/original/mastodonpyupload_.jpe","avatar_static":"http://localhost:3000/system/accounts/avatars/123/456/789/012/345/original/mastodonpyupload_.jpe","header":"http://localhost:3000/system/accounts/headers/123/456/789/012/345/original/mastodonpyupload_.jpe","header_static":"http://localhost:3000/system/accounts/headers/123/456/789/012/345/original/mastodonpyupload_.jpe","followers_count":0,"following_count":0,"statuses_count":126},"media_attachments":[],"mentions":[],"tags":[],"emojis":[]}'}
+ walk funny\u003c/p\u003e","url":"http://localhost:3000/@mastodonpy_test","avatar":"http://localhost:3000/system/accounts/avatars/123/456/789/012/345/original/mastodonpyupload_.jpe","avatar_static":"http://localhost:3000/system/accounts/avatars/123/456/789/012/345/original/mastodonpyupload_.jpe","header":"http://localhost:3000/system/accounts/headers/123/456/789/012/345/original/mastodonpyupload_.jpe","header_static":"http://localhost:3000/system/accounts/headers/123/456/789/012/345/original/mastodonpyupload_.jpe","followers_count":0,"following_count":0,"statuses_count":128},"media_attachments":[],"mentions":[],"tags":[],"emojis":[]}'}
headers:
Cache-Control: ['max-age=0, private, must-revalidate']
Content-Type: [application/json; charset=utf-8]
- ETag: [W/"3c8a52db795c6a852e9e7a21e7d912f4"]
+ ETag: [W/"3d64477a2e2beb52c14baba51ccd1490"]
Transfer-Encoding: [chunked]
Vary: ['Accept-Encoding, Origin']
X-Content-Type-Options: [nosniff]
X-Frame-Options: [SAMEORIGIN]
- X-Request-Id: [1f6725bf-2550-450f-bba5-d3967b33b7dc]
- X-Runtime: ['0.147682']
+ X-Request-Id: [0eb11335-9d45-4842-800d-dc4a2bb100dd]
+ X-Runtime: ['0.161381']
X-XSS-Protection: [1; mode=block]
content-length: ['1416']
status: {code: 200, message: OK}
@@ -68,21 +68,21 @@ interactions:
method: POST
uri: http://localhost:3000/api/v1/statuses
response:
- body: {string: '{"id":"99979315714058991","created_at":"2018-05-05T23:34:49.170Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost:3000/users/admin/statuses/99979315714058991","content":"\u003cp\u003e\u003cspan
+ body: {string: '{"id":"99979409284606875","created_at":"2018-05-05T23:58:36.908Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost:3000/users/admin/statuses/99979409284606875","content":"\u003cp\u003e\u003cspan
class=\"h-card\"\u003e\u003ca href=\"http://localhost:3000/@mastodonpy_test\"
class=\"u-url mention\"\u003e@\u003cspan\u003emastodonpy_test\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e
- beep beep I\u0026apos;m a jeep\u003c/p\u003e","url":"http://localhost:3000/@admin/99979315714058991","reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"pinned":false,"reblog":null,"application":{"name":"Mastodon.py
- test suite","website":null},"account":{"id":"1","username":"admin","acct":"admin","display_name":"","locked":false,"created_at":"2018-04-17T21:40:55.626Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost:3000/@admin","avatar":"http://localhost:3000/avatars/original/missing.png","avatar_static":"http://localhost:3000/avatars/original/missing.png","header":"http://localhost:3000/headers/original/missing.png","header_static":"http://localhost:3000/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":39},"media_attachments":[],"mentions":[{"id":"1234567890123456","username":"mastodonpy_test","url":"http://localhost:3000/@mastodonpy_test","acct":"mastodonpy_test"}],"tags":[],"emojis":[]}'}
+ beep beep I\u0026apos;m a jeep\u003c/p\u003e","url":"http://localhost:3000/@admin/99979409284606875","reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"pinned":false,"reblog":null,"application":{"name":"Mastodon.py
+ test suite","website":null},"account":{"id":"1","username":"admin","acct":"admin","display_name":"","locked":false,"created_at":"2018-04-17T21:40:55.626Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost:3000/@admin","avatar":"http://localhost:3000/avatars/original/missing.png","avatar_static":"http://localhost:3000/avatars/original/missing.png","header":"http://localhost:3000/headers/original/missing.png","header_static":"http://localhost:3000/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":45},"media_attachments":[],"mentions":[{"id":"1234567890123456","username":"mastodonpy_test","url":"http://localhost:3000/@mastodonpy_test","acct":"mastodonpy_test"}],"tags":[],"emojis":[]}'}
headers:
Cache-Control: ['max-age=0, private, must-revalidate']
Content-Type: [application/json; charset=utf-8]
- ETag: [W/"9852f6d00e1e9011caad26f718aa286a"]
+ ETag: [W/"cf7a8881dce33f2860b9710db188792e"]
Transfer-Encoding: [chunked]
Vary: ['Accept-Encoding, Origin']
X-Content-Type-Options: [nosniff]
X-Frame-Options: [SAMEORIGIN]
- X-Request-Id: [703ca6b3-f3c1-4157-96d0-34c07140c177]
- X-Runtime: ['0.348615']
+ X-Request-Id: [aa1e3b21-7389-4099-80cd-2e148564b91f]
+ X-Runtime: ['0.478716']
X-XSS-Protection: [1; mode=block]
content-length: ['1476']
status: {code: 200, message: OK}
@@ -99,22 +99,48 @@ interactions:
method: POST
uri: http://localhost:3000/api/v1/statuses
response:
- body: {string: '{"id":"99979315736933684","created_at":"2018-05-05T23:34:49.488Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost:3000/users/admin/statuses/99979315736933684","content":"\u003cp\u003eon
- the internet, nobody knows you\u0026apos;re a plane\u003c/p\u003e","url":"http://localhost:3000/@admin/99979315736933684","reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"pinned":false,"reblog":null,"application":{"name":"Mastodon.py
- test suite","website":null},"account":{"id":"1","username":"admin","acct":"admin","display_name":"","locked":false,"created_at":"2018-04-17T21:40:55.626Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost:3000/@admin","avatar":"http://localhost:3000/avatars/original/missing.png","avatar_static":"http://localhost:3000/avatars/original/missing.png","header":"http://localhost:3000/headers/original/missing.png","header_static":"http://localhost:3000/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":40},"media_attachments":[],"mentions":[],"tags":[],"emojis":[]}'}
+ body: {string: '{"id":"99979409315536647","created_at":"2018-05-05T23:58:37.370Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost:3000/users/admin/statuses/99979409315536647","content":"\u003cp\u003eon
+ the internet, nobody knows you\u0026apos;re a plane\u003c/p\u003e","url":"http://localhost:3000/@admin/99979409315536647","reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"pinned":false,"reblog":null,"application":{"name":"Mastodon.py
+ test suite","website":null},"account":{"id":"1","username":"admin","acct":"admin","display_name":"","locked":false,"created_at":"2018-04-17T21:40:55.626Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost:3000/@admin","avatar":"http://localhost:3000/avatars/original/missing.png","avatar_static":"http://localhost:3000/avatars/original/missing.png","header":"http://localhost:3000/headers/original/missing.png","header_static":"http://localhost:3000/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":46},"media_attachments":[],"mentions":[],"tags":[],"emojis":[]}'}
headers:
Cache-Control: ['max-age=0, private, must-revalidate']
Content-Type: [application/json; charset=utf-8]
- ETag: [W/"28991dfce9a4da45ed0bc7c886a05ac7"]
+ ETag: [W/"9f9d619a35ba2872a5aea194e6f87f60"]
Transfer-Encoding: [chunked]
Vary: ['Accept-Encoding, Origin']
X-Content-Type-Options: [nosniff]
X-Frame-Options: [SAMEORIGIN]
- X-Request-Id: [1bc22f75-7163-44f7-9e7f-696b7da28fc8]
- X-Runtime: ['0.279044']
+ X-Request-Id: [ac2b5974-2346-4bbc-b7e5-4e856736f202]
+ X-Runtime: ['0.351930']
X-XSS-Protection: [1; mode=block]
content-length: ['1175']
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.9.1]
+ method: DELETE
+ uri: http://localhost:3000/api/v1/statuses/99979409266681372
+ response:
+ body: {string: '{}'}
+ headers:
+ Cache-Control: ['max-age=0, private, must-revalidate']
+ Content-Type: [application/json; charset=utf-8]
+ ETag: [W/"902f10b5792b4c6bb0671da661310919"]
+ Transfer-Encoding: [chunked]
+ Vary: ['Accept-Encoding, Origin']
+ X-Content-Type-Options: [nosniff]
+ X-Frame-Options: [SAMEORIGIN]
+ X-Request-Id: [2750fe2f-27eb-41ac-9dc2-d27dbdb25361]
+ X-Runtime: ['0.072466']
+ X-XSS-Protection: [1; mode=block]
+ content-length: ['2']
+ status: {code: 200, message: OK}
- request:
body: null
headers:
@@ -128,28 +154,24 @@ interactions:
response:
body: {string: 'event: update
- data: {"id":"99979315699876567","created_at":"2018-05-05T23:34:48.888Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost:3000/users/mastodonpy_test/statuses/99979315699876567","content":"only
- real cars respond.
","url":"http://localhost:3000/@mastodonpy_test/99979315699876567","reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"pinned":false,"reblog":null,"application":{"name":"Mastodon.py
+ data: {"id":"99979409266681372","created_at":"2018-05-05T23:58:36.604Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost:3000/users/mastodonpy_test/statuses/99979409266681372","content":"only
+ real cars respond.
","url":"http://localhost:3000/@mastodonpy_test/99979409266681372","reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"pinned":false,"reblog":null,"application":{"name":"Mastodon.py
test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"John
Lennon","locked":true,"created_at":"2018-04-18T20:04:06.511Z","note":"I
- walk funny
","url":"http://localhost:3000/@mastodonpy_test","avatar":"http://localhost:3000/system/accounts/avatars/123/456/789/012/345/original/mastodonpyupload_.jpe","avatar_static":"http://localhost:3000/system/accounts/avatars/123/456/789/012/345/original/mastodonpyupload_.jpe","header":"http://localhost:3000/system/accounts/headers/123/456/789/012/345/original/mastodonpyupload_.jpe","header_static":"http://localhost:3000/system/accounts/headers/123/456/789/012/345/original/mastodonpyupload_.jpe","followers_count":0,"following_count":0,"statuses_count":126},"media_attachments":[],"mentions":[],"tags":[],"emojis":[]}
-
-
- event: update
-
- data: {"id":"99979315699876567","created_at":"2018-05-05T23:34:48.888Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost:3000/users/mastodonpy_test/statuses/99979315699876567","content":"only
- real cars respond.
","url":"http://localhost:3000/@mastodonpy_test/99979315699876567","reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"pinned":false,"reblog":null,"application":{"name":"Mastodon.py
- test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"John
- Lennon","locked":true,"created_at":"2018-04-18T20:04:06.511Z","note":"I
- walk funny
","url":"http://localhost:3000/@mastodonpy_test","avatar":"http://localhost:3000/system/accounts/avatars/123/456/789/012/345/original/mastodonpyupload_.jpe","avatar_static":"http://localhost:3000/system/accounts/avatars/123/456/789/012/345/original/mastodonpyupload_.jpe","header":"http://localhost:3000/system/accounts/headers/123/456/789/012/345/original/mastodonpyupload_.jpe","header_static":"http://localhost:3000/system/accounts/headers/123/456/789/012/345/original/mastodonpyupload_.jpe","followers_count":0,"following_count":0,"statuses_count":126},"media_attachments":[],"mentions":[],"tags":[],"emojis":[]}
+ walk funny
","url":"http://localhost:3000/@mastodonpy_test","avatar":"http://localhost:3000/system/accounts/avatars/123/456/789/012/345/original/mastodonpyupload_.jpe","avatar_static":"http://localhost:3000/system/accounts/avatars/123/456/789/012/345/original/mastodonpyupload_.jpe","header":"http://localhost:3000/system/accounts/headers/123/456/789/012/345/original/mastodonpyupload_.jpe","header_static":"http://localhost:3000/system/accounts/headers/123/456/789/012/345/original/mastodonpyupload_.jpe","followers_count":0,"following_count":0,"statuses_count":128},"media_attachments":[],"mentions":[],"tags":[],"emojis":[]}
event: notification
- data: {"id":"98","type":"mention","created_at":"2018-05-05T23:34:49.249Z","account":{"id":"1","username":"admin","acct":"admin","display_name":"","locked":false,"created_at":"2018-04-17T21:40:55.626Z","note":"","url":"http://localhost:3000/@admin","avatar":"http://localhost:3000/avatars/original/missing.png","avatar_static":"http://localhost:3000/avatars/original/missing.png","header":"http://localhost:3000/headers/original/missing.png","header_static":"http://localhost:3000/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":39},"status":{"id":"99979315714058991","created_at":"2018-05-05T23:34:49.170Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost:3000/users/admin/statuses/99979315714058991","content":"
","url":"http://localhost:3000/@admin","avatar":"http://localhost:3000/avatars/original/missing.png","avatar_static":"http://localhost:3000/avatars/original/missing.png","header":"http://localhost:3000/headers/original/missing.png","header_static":"http://localhost:3000/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":45},"status":{"id":"99979409284606875","created_at":"2018-05-05T23:58:36.908Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost:3000/users/admin/statuses/99979409284606875","content":"@mastodonpy_test beep beep I'm a jeep
","url":"http://localhost:3000/@admin/99979315714058991","reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"reblog":null,"application":{"name":"Mastodon.py
- test suite","website":null},"account":{"id":"1","username":"admin","acct":"admin","display_name":"","locked":false,"created_at":"2018-04-17T21:40:55.626Z","note":"","url":"http://localhost:3000/@admin","avatar":"http://localhost:3000/avatars/original/missing.png","avatar_static":"http://localhost:3000/avatars/original/missing.png","header":"http://localhost:3000/headers/original/missing.png","header_static":"http://localhost:3000/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":39},"media_attachments":[],"mentions":[{"id":"1234567890123456","username":"mastodonpy_test","url":"http://localhost:3000/@mastodonpy_test","acct":"mastodonpy_test"}],"tags":[],"emojis":[]}}
+ mention\">@mastodonpy_test beep beep I'm a jeep","url":"http://localhost:3000/@admin/99979409284606875","reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"reblog":null,"application":{"name":"Mastodon.py
+ test suite","website":null},"account":{"id":"1","username":"admin","acct":"admin","display_name":"","locked":false,"created_at":"2018-04-17T21:40:55.626Z","note":"","url":"http://localhost:3000/@admin","avatar":"http://localhost:3000/avatars/original/missing.png","avatar_static":"http://localhost:3000/avatars/original/missing.png","header":"http://localhost:3000/headers/original/missing.png","header_static":"http://localhost:3000/headers/original/missing.png","followers_count":0,"following_count":0,"statuses_count":45},"media_attachments":[],"mentions":[{"id":"1234567890123456","username":"mastodonpy_test","url":"http://localhost:3000/@mastodonpy_test","acct":"mastodonpy_test"}],"tags":[],"emojis":[]}}
+
+
+ event: delete
+
+ data: 99979409266681372
'}
@@ -159,9 +181,9 @@ interactions:
Access-Control-Allow-Origin: ['*']
Connection: [keep-alive]
Content-Type: [text/event-stream]
- Date: ['Sat, 05 May 2018 23:34:49 GMT']
+ Date: ['Sat, 05 May 2018 23:58:36 GMT']
Transfer-Encoding: [chunked]
X-Powered-By: [Express]
- X-Request-Id: [6ad697a2-e602-43fd-84b6-7676c3355d8f]
+ X-Request-Id: [bc14a253-bae4-436f-b7e4-420a9a9378c9]
status: {code: 200, message: OK}
version: 1
diff --git a/tests/cassettes/test_stream_user_local.yaml b/tests/cassettes/test_stream_user_local.yaml
new file mode 100644
index 0000000..0b7b172
--- /dev/null
+++ b/tests/cassettes/test_stream_user_local.yaml
@@ -0,0 +1,178 @@
+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.9.1]
+ method: GET
+ uri: http://localhost:3000/api/v1/instance/
+ response:
+ body: {string: '{"uri":"localhost:3000","title":"Mastodon","description":"","email":"","version":"2.3.3","urls":{"streaming_api":"ws://localhost:4000"},"stats":{"user_count":2,"status_count":168,"domain_count":0},"thumbnail":"http://localhost:3000/packs/preview.jpg","languages":["en"],"contact_account":null}'}
+ headers:
+ Cache-Control: ['max-age=0, private, must-revalidate']
+ Content-Type: [application/json; charset=utf-8]
+ ETag: [W/"9dcdc369320d2f0c962f1a06daed8db9"]
+ Transfer-Encoding: [chunked]
+ Vary: ['Accept-Encoding, Origin']
+ X-Content-Type-Options: [nosniff]
+ X-Frame-Options: [SAMEORIGIN]
+ X-Request-Id: [2429f21b-a558-47f9-8bd3-4d3084a2680b]
+ X-Runtime: ['0.041377']
+ X-XSS-Protection: [1; mode=block]
+ content-length: ['293']
+ status: {code: 200, message: OK}
+- request:
+ body: status=it%27s+cool+guy
+ headers:
+ Accept: ['*/*']
+ Accept-Encoding: ['gzip, deflate']
+ Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+ Connection: [keep-alive]
+ Content-Length: ['22']
+ Content-Type: [application/x-www-form-urlencoded]
+ User-Agent: [python-requests/2.9.1]
+ method: POST
+ uri: http://localhost:3000/api/v1/statuses
+ response:
+ body: {string: '{"id":"99979403680236480","created_at":"2018-05-05T23:57:11.361Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"fy","uri":"http://localhost:3000/users/mastodonpy_test/statuses/99979403680236480","content":"\u003cp\u003eit\u0026apos;s
+ cool guy\u003c/p\u003e","url":"http://localhost:3000/@mastodonpy_test/99979403680236480","reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"pinned":false,"reblog":null,"application":{"name":"Mastodon.py
+ test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"John
+ Lennon","locked":true,"created_at":"2018-04-18T20:04:06.511Z","note":"\u003cp\u003eI
+ walk funny\u003c/p\u003e","url":"http://localhost:3000/@mastodonpy_test","avatar":"http://localhost:3000/system/accounts/avatars/123/456/789/012/345/original/mastodonpyupload_.jpe","avatar_static":"http://localhost:3000/system/accounts/avatars/123/456/789/012/345/original/mastodonpyupload_.jpe","header":"http://localhost:3000/system/accounts/headers/123/456/789/012/345/original/mastodonpyupload_.jpe","header_static":"http://localhost:3000/system/accounts/headers/123/456/789/012/345/original/mastodonpyupload_.jpe","followers_count":0,"following_count":0,"statuses_count":127},"media_attachments":[],"mentions":[],"tags":[],"emojis":[]}'}
+ headers:
+ Cache-Control: ['max-age=0, private, must-revalidate']
+ Content-Type: [application/json; charset=utf-8]
+ ETag: [W/"121605cb0579eff7d8201d992e4d2cb1"]
+ Transfer-Encoding: [chunked]
+ Vary: ['Accept-Encoding, Origin']
+ X-Content-Type-Options: [nosniff]
+ X-Frame-Options: [SAMEORIGIN]
+ X-Request-Id: [e3123208-a5d0-47b5-82f4-fef3bc5054a5]
+ X-Runtime: ['0.147603']
+ X-XSS-Protection: [1; mode=block]
+ content-length: ['1416']
+ 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.9.1]
+ method: GET
+ uri: http://localhost:4000/api/v1/streaming/user
+ response:
+ body: {string: 'event: update
+
+ data: {"id":"99979403680236480","created_at":"2018-05-05T23:57:11.361Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"fy","uri":"http://localhost:3000/users/mastodonpy_test/statuses/99979403680236480","content":"it's
+ cool guy
","url":"http://localhost:3000/@mastodonpy_test/99979403680236480","reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"pinned":false,"reblog":null,"application":{"name":"Mastodon.py
+ test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"John
+ Lennon","locked":true,"created_at":"2018-04-18T20:04:06.511Z","note":"I
+ walk funny
","url":"http://localhost:3000/@mastodonpy_test","avatar":"http://localhost:3000/system/accounts/avatars/123/456/789/012/345/original/mastodonpyupload_.jpe","avatar_static":"http://localhost:3000/system/accounts/avatars/123/456/789/012/345/original/mastodonpyupload_.jpe","header":"http://localhost:3000/system/accounts/headers/123/456/789/012/345/original/mastodonpyupload_.jpe","header_static":"http://localhost:3000/system/accounts/headers/123/456/789/012/345/original/mastodonpyupload_.jpe","followers_count":0,"following_count":0,"statuses_count":127},"media_attachments":[],"mentions":[],"tags":[],"emojis":[]}
+
+
+'}
+ headers:
+ Access-Control-Allow-Headers: ['Authorization, Accept, Cache-Control']
+ Access-Control-Allow-Methods: ['GET, OPTIONS']
+ Access-Control-Allow-Origin: ['*']
+ Connection: [keep-alive]
+ Content-Type: [text/event-stream]
+ Date: ['Sat, 05 May 2018 23:57:11 GMT']
+ Transfer-Encoding: [chunked]
+ X-Powered-By: [Express]
+ X-Request-Id: [78347150-7ae6-453d-a423-187c71c50b2b]
+ 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.9.1]
+ method: GET
+ uri: http://localhost:3000/api/v1/instance/
+ response:
+ body: {string: '{"uri":"localhost:3000","title":"Mastodon","description":"","email":"","version":"2.3.3","urls":{"streaming_api":"ws://localhost:4000"},"stats":{"user_count":2,"status_count":173,"domain_count":0},"thumbnail":"http://localhost:3000/packs/preview.jpg","languages":["en"],"contact_account":null}'}
+ headers:
+ Cache-Control: ['max-age=0, private, must-revalidate']
+ Content-Type: [application/json; charset=utf-8]
+ ETag: [W/"4ea0e36d646260365a2d1414798974a6"]
+ Transfer-Encoding: [chunked]
+ Vary: ['Accept-Encoding, Origin']
+ X-Content-Type-Options: [nosniff]
+ X-Frame-Options: [SAMEORIGIN]
+ X-Request-Id: [e8c8246d-d382-41d9-b7f1-d11fb0b74711]
+ X-Runtime: ['0.455622']
+ X-XSS-Protection: [1; mode=block]
+ content-length: ['293']
+ status: {code: 200, message: OK}
+- request:
+ body: status=it%27s+cool+guy
+ headers:
+ Accept: ['*/*']
+ Accept-Encoding: ['gzip, deflate']
+ Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
+ Connection: [keep-alive]
+ Content-Length: ['22']
+ Content-Type: [application/x-www-form-urlencoded]
+ User-Agent: [python-requests/2.9.1]
+ method: POST
+ uri: http://localhost:3000/api/v1/statuses
+ response:
+ body: {string: '{"id":"99979411114866656","created_at":"2018-05-05T23:59:04.956Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"fy","uri":"http://localhost:3000/users/mastodonpy_test/statuses/99979411114866656","content":"\u003cp\u003eit\u0026apos;s
+ cool guy\u003c/p\u003e","url":"http://localhost:3000/@mastodonpy_test/99979411114866656","reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"pinned":false,"reblog":null,"application":{"name":"Mastodon.py
+ test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"John
+ Lennon","locked":true,"created_at":"2018-04-18T20:04:06.511Z","note":"\u003cp\u003eI
+ walk funny\u003c/p\u003e","url":"http://localhost:3000/@mastodonpy_test","avatar":"http://localhost:3000/system/accounts/avatars/123/456/789/012/345/original/mastodonpyupload_.jpe","avatar_static":"http://localhost:3000/system/accounts/avatars/123/456/789/012/345/original/mastodonpyupload_.jpe","header":"http://localhost:3000/system/accounts/headers/123/456/789/012/345/original/mastodonpyupload_.jpe","header_static":"http://localhost:3000/system/accounts/headers/123/456/789/012/345/original/mastodonpyupload_.jpe","followers_count":0,"following_count":0,"statuses_count":128},"media_attachments":[],"mentions":[],"tags":[],"emojis":[]}'}
+ headers:
+ Cache-Control: ['max-age=0, private, must-revalidate']
+ Content-Type: [application/json; charset=utf-8]
+ ETag: [W/"37bc69af5d0ef985756917c50ebd21e9"]
+ Transfer-Encoding: [chunked]
+ Vary: ['Accept-Encoding, Origin']
+ X-Content-Type-Options: [nosniff]
+ X-Frame-Options: [SAMEORIGIN]
+ X-Request-Id: [64080bdc-dd95-409c-a2ac-b24b5207ca86]
+ X-Runtime: ['0.553667']
+ X-XSS-Protection: [1; mode=block]
+ content-length: ['1416']
+ 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.9.1]
+ method: GET
+ uri: http://localhost:4000/api/v1/streaming/user
+ response:
+ body: {string: 'event: update
+
+ data: {"id":"99979411114866656","created_at":"2018-05-05T23:59:04.956Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"fy","uri":"http://localhost:3000/users/mastodonpy_test/statuses/99979411114866656","content":"it's
+ cool guy
","url":"http://localhost:3000/@mastodonpy_test/99979411114866656","reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"pinned":false,"reblog":null,"application":{"name":"Mastodon.py
+ test suite","website":null},"account":{"id":"1234567890123456","username":"mastodonpy_test","acct":"mastodonpy_test","display_name":"John
+ Lennon","locked":true,"created_at":"2018-04-18T20:04:06.511Z","note":"I
+ walk funny
","url":"http://localhost:3000/@mastodonpy_test","avatar":"http://localhost:3000/system/accounts/avatars/123/456/789/012/345/original/mastodonpyupload_.jpe","avatar_static":"http://localhost:3000/system/accounts/avatars/123/456/789/012/345/original/mastodonpyupload_.jpe","header":"http://localhost:3000/system/accounts/headers/123/456/789/012/345/original/mastodonpyupload_.jpe","header_static":"http://localhost:3000/system/accounts/headers/123/456/789/012/345/original/mastodonpyupload_.jpe","followers_count":0,"following_count":0,"statuses_count":128},"media_attachments":[],"mentions":[],"tags":[],"emojis":[]}
+
+
+'}
+ headers:
+ Access-Control-Allow-Headers: ['Authorization, Accept, Cache-Control']
+ Access-Control-Allow-Methods: ['GET, OPTIONS']
+ Access-Control-Allow-Origin: ['*']
+ Connection: [keep-alive]
+ Content-Type: [text/event-stream]
+ Date: ['Sat, 05 May 2018 23:59:05 GMT']
+ Transfer-Encoding: [chunked]
+ X-Powered-By: [Express]
+ X-Request-Id: [824c3f23-264a-44cd-8c2a-55bf888c5ed3]
+ status: {code: 200, message: OK}
+version: 1
diff --git a/tests/test_streaming.py b/tests/test_streaming.py
index 8c2160a..08d05b3 100644
--- a/tests/test_streaming.py
+++ b/tests/test_streaming.py
@@ -257,9 +257,11 @@ def test_stream_user(api, api2):
updates = []
notifications = []
+ deletes = []
listener = CallbackStreamListener(
update_handler = lambda x: updates.append(x),
- notification_handler = lambda x: notifications.append(x)
+ notification_handler = lambda x: notifications.append(x),
+ delete_handler = lambda x: deletes.append(x)
)
posted = []
@@ -268,6 +270,46 @@ def test_stream_user(api, api2):
posted.append(api.status_post("only real cars respond."))
posted.append(api2.status_post("@mastodonpy_test beep beep I'm a jeep"))
posted.append(api2.status_post("on the internet, nobody knows you're a plane"))
+ time.sleep(1)
+ api.status_delete(posted[0])
+ time.sleep(2)
+ streamingClose()
+
+ t = threading.Thread(args=(), target=do_activities)
+ t.start()
+
+ stream = None
+ try:
+ stream = api.stream_user(listener, run_async=True)
+ time.sleep(13)
+ finally:
+ if stream != None:
+ stream.close()
+
+ assert len(updates) == 1
+ assert len(notifications) == 1
+ assert len(deletes) == 1
+
+ assert updates[0].id == posted[0].id
+ assert deletes[0] == posted[0].id
+ assert notifications[0].status.id == posted[1].id
+
+ t.join()
+
+@pytest.mark.vcr(match_on=['path'])
+def test_stream_user_local(api, api2):
+ patchStreaming()
+
+ updates = []
+ notifications = []
+ listener = CallbackStreamListener(
+ local_update_handler = lambda x: updates.append(x),
+ )
+
+ posted = []
+ def do_activities():
+ time.sleep(5)
+ posted.append(api.status_post("it's cool guy"))
time.sleep(3)
streamingClose()
@@ -282,13 +324,7 @@ def test_stream_user(api, api2):
if stream != None:
stream.close()
- assert len(updates) == 2
- assert len(notifications) == 1
-
+ assert len(updates) == 1
assert updates[0].id == posted[0].id
- assert updates[1].id == posted[0].id
- assert notifications[0].status.id == posted[1].id
- t.join()
-
-
\ No newline at end of file
+ t.join()
\ No newline at end of file