mirror of
https://github.com/spotipy-dev/spotipy.git
synced 2026-10-12 09:10:45 +00:00
Adding Initial PKCE Auth Flow Support (#542)
* Added base funtionality for PKCE Authorization - i538 * fixed a mistake with the auth code * fixed more misunderstandings. fixed grant_access_token to now call authorization if needed * added comments and references to code verifier and code challenge * removed debug print statement * updated unit tests for new PKCE flow * cleaned up username issues - added doc strings to class * fixed import issue, added user endpoint tests * forgot to commit this file * linted * clarified comment * no longer generates code verifier or challenge in constructor, only when needed * fixed flake8 complaints, added forgotten unit tests * fixed linting with unit tests * anotha one * added python3.5 support * linting * added to CHANGELOG * removed as_dict option from get_access_token() Co-authored-by: tomCLANCC <26153156+tomCLANCC@users.noreply.github.com>
This commit is contained in:
1 parent
88cf75b778
commit
c425102659
4 files changed
+531
-2
No files matched your search
@@ -5,7 +5,8 @@ from spotipy import (
|
||||
prompt_for_user_token,
|
||||
Spotify,
|
||||
SpotifyException,
|
||||
SpotifyImplicitGrant
|
||||
SpotifyImplicitGrant,
|
||||
SpotifyPKCE
|
||||
)
|
||||
import unittest
|
||||
import requests
|
||||
@@ -424,3 +425,36 @@ class SpotipyImplicitGrantTests(unittest.TestCase):
|
||||
c_user = self.spotify.current_user()
|
||||
user = self.spotify.user(c_user['id'])
|
||||
self.assertEqual(c_user['display_name'], user['display_name'])
|
||||
|
||||
|
||||
class SpotifyPKCETests(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
scope = (
|
||||
'user-follow-read '
|
||||
'user-follow-modify '
|
||||
)
|
||||
auth_manager = SpotifyPKCE(scope=scope, cache_path=".cache-implicittest")
|
||||
cls.spotify = Spotify(auth_manager=auth_manager)
|
||||
|
||||
def test_user_follows_and_unfollows_artist(self):
|
||||
# Initially follows 1 artist
|
||||
current_user_followed_artists = self.spotify.current_user_followed_artists()[
|
||||
'artists']['total']
|
||||
|
||||
# Follow 2 more artists
|
||||
artists = ["6DPYiyq5kWVQS4RGwxzPC7", "0NbfKEOTQCcwd6o7wSDOHI"]
|
||||
self.spotify.user_follow_artists(artists)
|
||||
res = self.spotify.current_user_followed_artists()
|
||||
self.assertEqual(res['artists']['total'], current_user_followed_artists + len(artists))
|
||||
|
||||
# Unfollow these 2 artists
|
||||
self.spotify.user_unfollow_artists(artists)
|
||||
res = self.spotify.current_user_followed_artists()
|
||||
self.assertEqual(res['artists']['total'], current_user_followed_artists)
|
||||
|
||||
def test_current_user(self):
|
||||
c_user = self.spotify.current_user()
|
||||
user = self.spotify.user(c_user['id'])
|
||||
self.assertEqual(c_user['display_name'], user['display_name'])
|
||||
Reference in new issue
Block a user