A fake spotipy client. For unit tests and stuff.
Project description
fakespotipy
A fake spotipy client. For unit tests and stuff.
Installation
pip install fakespotipy
Usage
# Initialize the client
>>> from fakespotipy import FakeSpotify
>>> client = FakeSpotify()
# 1. Example of a mock object response
# First, set up a mock response
>>> response = {
... 'expires_in': 60,
... 'access_token': 'BQDdKdI1eLRl2ErhCRC0jHdfr_DYEm_ecUuUPq2-dW_txQZeCrA32lNSYOZO7v7rEPXqC846nHlgSeg4m0c3-y05W9ISJRluCXdco4igf8eMhgLojXZb4RbE0vmlH4a06T3TX7Jg-uN1ClYFEkXnCGCA0NBNqkiFYDKlvMWqZExQom-XF-8pr6gV_PpzNJ2eKRRR6_ORp1ABUhtJ_aD8f5W4GexLq1mzpWQLkKE_Fq_LuwE1JhpxxNxRI-FLtzz46Jc',
... 'token_type': 'Bearer',
... 'refresh_token': 'AQDDNE-U4IElufFWfNjlwy7rOn-Kyt2PeIN1Nze2I5rVi7c9Etcx9blVkHVe5liSoKRMbJzS3etlA3sQ-0UqMKxRJ-HN08jrO_1IoDgciSZOaAUaQUiSkBOgtgnmO_tEHCU',
... 'scope': 'user-top-read',
... }
# Prep the client with that response
>>> client.add_response('refresh_access_token', response)
# And trigger it
>>> client.refresh_access_token('refresh_token_str_here')
{'access_token': 'BQDdKdI1eLRl2ErhCRC0jHdfr_DYEm_ecUuUPq2-dW_txQZeCrA32lNSYOZO7v7rEPXqC846nHlgSeg4m0c3-y05W9ISJRluCXdco4igf8eMhgLojXZb4RbE0vmlH4a06T3TX7Jg-uN1ClYFEkXnCGCA0NBNqkiFYDKlvMWqZExQom-XF-8pr6gV_PpzNJ2eKRRR6_ORp1ABUhtJ_aD8f5W4GexLq1mzpWQLkKE_Fq_LuwE1JhpxxNxRI-FLtzz46Jc', 'token_type': 'Bearer', 'expires_in': 60, 'refresh_token': 'AQDDNE-U4IElufFWfNjlwy7rOn-Kyt2PeIN1Nze2I5rVi7c9Etcx9blVkHVe5liSoKRMbJzS3etlA3sQ-0UqMKxRJ-HN08jrO_1IoDgciSZOaAUaQUiSkBOgtgnmO_tEHCU', 'scope': 'user-top-read'}
# If we try again, we get a NotImplementedError
>>> client.refresh_access_token('refresh_token_str_here')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "fakespotipy.py", line 37, in method
raise NotImplementedError
NotImplementedError
# 2. Example of a mock function response
# First set up the mock function
>>> def refresh_response(refresh_token_str):
... print "i'm refreshing!"
... if refresh_token_str == 'foo':
... raise Exception("Foo! Oh noes!")
... return {'foo': 'bar'}
...
# Add it a couple of times (so we can call it twice)
>>> client.add_response('refresh_access_token', refresh_response)
>>> client.add_response('refresh_access_token', refresh_response)
# Trigger it
>>> client.refresh_access_token('refresh_token_str_here')
i'm refreshing!
{'foo': 'bar'}
# Trigger again, using anticipated input to trigger custom Exception
>>> client.refresh_access_token('foo')
i'm refreshing!
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "fakespotipy.py", line 40, in method
return response(*args, **kwargs)
File "<stdin>", line 4, in refresh_response
Exception: Foo! Oh noes!
# Try one more time, get NotImplementedError
>>> client.refresh_access_token('foo')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "fakespotipy.py", line 37, in method
raise NotImplementedError
NotImplementedError
Testing
python setup.py test
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
fakespotipy-0.7.0.tar.gz
(2.8 kB
view details)
Built Distribution
File details
Details for the file fakespotipy-0.7.0.tar.gz
.
File metadata
- Download URL: fakespotipy-0.7.0.tar.gz
- Upload date:
- Size: 2.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2f221f08f83b570a7da943c12db0e46950b595664e946b8f1fa51de19a7ae5b |
|
MD5 | 1153188accc59313968b0a6c7f440c7e |
|
BLAKE2b-256 | 0ad60a299f3b1e6d3af02b27828813d7366780eb1bdf2be084f7076c9ce37266 |
File details
Details for the file fakespotipy-0.7.0-py2.py3-none-any.whl
.
File metadata
- Download URL: fakespotipy-0.7.0-py2.py3-none-any.whl
- Upload date:
- Size: 2.9 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 37ea4a228e4db122ff8c31b41d26497f9e528773f0b1141c12959b6c1d4fa53e |
|
MD5 | 15c77ba54b5db08d763a8a3eb606cb44 |
|
BLAKE2b-256 | aa2ae09625b67343b8be7dc511401c0e713f30bbbbe5994f3454927253b5e375 |