Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions tests/test_scrobble.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# -*- coding: utf-8 -*-
from unittest.mock import patch

from trakt.movies import Movie
from trakt.sync import Scrobbler

Expand All @@ -22,3 +24,28 @@ def test_scrobbler_context_manager():
with Scrobbler(guardians, 0.0, '1.0.0', '2015-02-01') as scrob:
for i in range(10):
scrob.update(i*10)


def test_scrobbler_payload_excludes_app_metadata():
"""scrobble payload must not include undocumented app_version/date fields"""
import trakt.core
guardians = Movie('Guardians of the Galaxy', year=2014)
scrobbler = Scrobbler(guardians, 42.0, '1.0.0', '2015-02-01')

with patch.object(trakt.core.api(), 'post', return_value=None) as mock_post:
scrobbler.start()

print("call_args:", mock_post.call_args)
print("args:", getattr(mock_post.call_args, "args", None))
print("tuple:", tuple(mock_post.call_args))

args, kwargs = mock_post.call_args
assert not kwargs
assert len(args) >= 2
payload = args[-1]

assert isinstance(payload, dict)
assert payload['progress'] == 42.0
assert 'app_version' not in payload
assert 'app_date' not in payload
assert 'date' not in payload
3 changes: 1 addition & 2 deletions trakt/sync.py
Original file line number Diff line number Diff line change
Expand Up @@ -607,8 +607,7 @@ def _post(self, uri):

:param uri: The uri to post to
"""
payload = dict(progress=self.progress, app_version=self.version,
date=self.date)
payload = dict(progress=self.progress)
payload.update(self.media.to_json_singular())
response = yield uri, payload
yield response
Expand Down