From e9edf2a255f0e9ffa8fde02a09bad0282eae989a Mon Sep 17 00:00:00 2001 From: Sandeep Murthy Date: Sat, 17 Feb 2018 15:34:52 +0000 Subject: [PATCH] Miscellaneous fixes - clean up tests --- .gitignore | 1 + requirements.txt | 1 + setup.py | 1 + spotipy/client.py | 2 +- spotipy/util.py | 2 +- tests/client_credentials_tests.py | 29 +++++++++++------- tests/test_oauth.py | 12 ++++++-- tests/tests.py | 50 ++++++++++++++++++++----------- 8 files changed, 66 insertions(+), 32 deletions(-) diff --git a/.gitignore b/.gitignore index 286ddd2..d88e85e 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,4 @@ docs/_build/ .* archive +*.sh diff --git a/requirements.txt b/requirements.txt index 47f25d8..708dccd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ +mock==2.0.0 requests==2.3.0 six==1.10.0 \ No newline at end of file diff --git a/setup.py b/setup.py index c673a92..0dde392 100644 --- a/setup.py +++ b/setup.py @@ -9,6 +9,7 @@ setup( author_email="paul@echonest.com", url='http://spotipy.readthedocs.org/', install_requires=[ + 'mock>=2.0.0', 'requests>=2.3.0', 'six>=1.10.0', ], diff --git a/spotipy/client.py b/spotipy/client.py index b2ad6f1..90b87b7 100644 --- a/spotipy/client.py +++ b/spotipy/client.py @@ -60,7 +60,7 @@ class Spotify(object): def __init__(self, auth=None, requests_session=True, client_credentials_manager=None, proxies=None, requests_timeout=None): """ - Create a Spotify API object. + Creates a Spotify API client. :param auth: An authorization token (optional) :param requests_session: diff --git a/spotipy/util.py b/spotipy/util.py index 336fd58..0480fd6 100644 --- a/spotipy/util.py +++ b/spotipy/util.py @@ -5,7 +5,7 @@ from __future__ import print_function __all__ = [ - 'prompt_for_user_token9' + 'prompt_for_user_token' ] import os diff --git a/tests/client_credentials_tests.py b/tests/client_credentials_tests.py index 4905062..aaaab75 100644 --- a/tests/client_credentials_tests.py +++ b/tests/client_credentials_tests.py @@ -1,27 +1,36 @@ -# -*- coding: latin-1 -*- +# -*- coding: utf-8 -*- -import spotipy -from spotipy.oauth2 import SpotifyClientCredentials +""" Client Credentials Requests Tests """ + +import os +import sys import unittest -''' - Client Credentials Requests Tests -''' +sys.path.insert(0, os.path.abspath(os.pardir)) + +from spotipy import ( + Spotify, + SpotifyClientCredentials, +) + class ClientCredentialsTestSpotipy(unittest.TestCase): ''' These tests require user authentication ''' + @classmethod + def setUpClass(self): + self.spotify = Spotify(client_credentials_manager=SpotifyClientCredentials()) + self.spotify.trace = False + muse_urn = 'spotify:artist:12Chz98pHFMPJEknJQMWvI' def test_request_with_token(self): - artist = spotify.artist(self.muse_urn) + artist = self.spotify.artist(self.muse_urn) self.assertTrue(artist['name'] == 'Muse') if __name__ == '__main__': - spotify_cc = SpotifyClientCredentials() - spotify = spotipy.Spotify(client_credentials_manager=spotify_cc) - spotify.trace = False + unittest.main() diff --git a/tests/test_oauth.py b/tests/test_oauth.py index 1871b60..0c18ef1 100644 --- a/tests/test_oauth.py +++ b/tests/test_oauth.py @@ -1,8 +1,15 @@ -from spotipy.oauth2 import SpotifyOAuth -import json +# -*- coding: utf-8 -*- + import io +import json +import os +import sys import unittest +sys.path.insert(0, os.path.abspath(os.pardir)) + +from spotipy import SpotifyOAuth + try: import unittest.mock as mock except ImportError: @@ -166,4 +173,5 @@ class TestSpotifyOAuth(unittest.TestCase): if __name__ == '__main__': + unittest.main() diff --git a/tests/tests.py b/tests/tests.py index 760b91c..cfdfb9e 100644 --- a/tests/tests.py +++ b/tests/tests.py @@ -1,9 +1,19 @@ -# -*- coding: latin-1 -*- -import spotipy -import unittest +# -*- coding: utf-8 -*- + +import os import pprint +import sys +import unittest + import requests -from spotipy.client import SpotifyException + +sys.path.insert(0, os.path.abspath(os.pardir)) + +from spotipy import ( + prompt_for_user_token, + Spotify, + SpotifyException, +) class TestSpotipy(unittest.TestCase): @@ -22,8 +32,14 @@ class TestSpotipy(unittest.TestCase): bad_id = 'BAD_ID' - def setUp(self): - self.spotify = spotipy.Spotify() + @classmethod + def setUpClass(self): + self.token = os.getenv('SPOTIPY_CLIENT_TOKEN') + if not self.token: + raise Exception('Set your Spotify client app token via the environment variable `SPOTIPY_CLIENT_TOKEN`') + + self.spotify = Spotify(auth=self.token) + def test_artist_urn(self): artist = self.spotify.artist(self.radiohead_urn) @@ -74,7 +90,7 @@ class TestSpotipy(unittest.TestCase): try: track = self.spotify.track(self.el_scorcho_bad_urn) self.assertTrue(False) - except spotipy.SpotifyException: + except SpotifyException: self.assertTrue(True) def test_tracks(self): @@ -121,11 +137,11 @@ class TestSpotipy(unittest.TestCase): self.assertTrue(found) def test_search_timeout(self): - sp = spotipy.Spotify(requests_timeout=.1) + sp = Spotify(auth=self.token, requests_timeout=.1) try: results = sp.search(q='my*', type='track') self.assertTrue(False, 'unexpected search timeout') - except requests.ReadTimeout: + except requests.Timeout: self.assertTrue(True, 'expected search timeout') @@ -149,14 +165,14 @@ class TestSpotipy(unittest.TestCase): try: track = self.spotify.track(self.bad_id) self.assertTrue(False) - except spotipy.SpotifyException: + except SpotifyException: self.assertTrue(True) def test_track_bad_id(self): try: track = self.spotify.track(self.bad_id) self.assertTrue(False) - except spotipy.SpotifyException: + except SpotifyException: self.assertTrue(True) def test_unauthenticated_post_fails(self): @@ -166,20 +182,17 @@ class TestSpotipy(unittest.TestCase): cm.exception.http_status == 403) def test_custom_requests_session(self): - from requests import Session - sess = Session() + sess = requests.Session() sess.headers["user-agent"] = "spotipy-test" - with_custom_session = spotipy.Spotify(requests_session=sess) + with_custom_session = Spotify(auth=self.token, requests_session=sess) self.assertTrue(with_custom_session.user(user="akx")["uri"] == "spotify:user:akx") def test_force_no_requests_session(self): - from requests import Session - with_no_session = spotipy.Spotify(requests_session=False) - self.assertFalse(isinstance(with_no_session._session, Session)) + with_no_session = Spotify(auth=self.token, requests_session=False) + self.assertFalse(isinstance(with_no_session._session, requests.Session)) self.assertTrue(with_no_session.user(user="akx")["uri"] == "spotify:user:akx") - ''' Need tests for: @@ -188,4 +201,5 @@ class TestSpotipy(unittest.TestCase): ''' if __name__ == '__main__': + unittest.main()