Skip to content

Commit

Permalink
fix: support for oauth username patching
Browse files Browse the repository at this point in the history
Added unit tests for the operation
  • Loading branch information
joamag committed May 22, 2021
1 parent e1d42bd commit 3a030c7
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 2 deletions.
8 changes: 6 additions & 2 deletions src/appier_extras/parts/admin/part.py
Expand Up @@ -2692,10 +2692,14 @@ def _on_touch_login(self, account):
self.flush_settings()

def _on_change_username(self, account, username):
oauth_tokens = models.OAuthToken.find(username = username, limit = 0)
oauth_tokens = models.OAuthToken.find(
username = username,
rules = False,
limit = 0
)
for oauth_token in oauth_tokens:
oauth_token.username = account.username
oauth_token.save()
oauth_token.save(immutables_a = False)

@property
def _last_login_s(self, format = "%Y-%m-%d %H:%M:%S UTC"):
Expand Down
51 changes: 51 additions & 0 deletions src/appier_extras/test/admin/models/oauth/oauth_token.py
Expand Up @@ -147,3 +147,54 @@ def test_reuse(self):
self.assertEqual(oauth_token.username, "username")
self.assertEqual(oauth_token.scope, ["admin", "user"])
self.assertEqual(oauth_token.tokens, ["user"])

def test_change_username(self):
account = appier_extras.admin.Account()
account.username = "username"
account.email = "username@domain.com"
account.password = "password"
account.password_confirm = "password"
account.save()

oauth_client = appier_extras.admin.OAuthClient()
oauth_client.name = "name"
oauth_client.redirect_uri = "http://localhost/oauth"
oauth_client.save()

self.assertNotEqual(oauth_client.id, None)
self.assertNotEqual(oauth_client.client_id, None)
self.assertNotEqual(oauth_client.client_secret, None)
self.assertEqual(oauth_client.name, "name")
self.assertEqual(oauth_client.redirect_uri, "http://localhost/oauth")

oauth_token = oauth_client.build_token_s(username = "username", scope = ["admin", "user"])

self.assertNotEqual(oauth_token.id, None)
self.assertNotEqual(oauth_token.access_token, None)
self.assertNotEqual(oauth_token.authorization_code, None)
self.assertNotEqual(oauth_token.authorization_code_date, None)
self.assertEqual(oauth_token.client.id, oauth_client.id)
self.assertEqual(oauth_token.username, "username")
self.assertEqual(oauth_token.scope, ["admin", "user"])
self.assertEqual(oauth_token.tokens, ["user"])

account = account.reload()
account.change_username_s("username_changed")

oauth_token_p = oauth_token
oauth_token = oauth_token.reload(rules = False)

self.assertNotEqual(oauth_token.id, None)
self.assertNotEqual(oauth_token.access_token, None)
self.assertNotEqual(oauth_token.authorization_code, None)
self.assertNotEqual(oauth_token.authorization_code_date, None)
self.assertEqual(oauth_token.client.id, oauth_client.id)
self.assertEqual(oauth_token.username, "username_changed")
self.assertEqual(oauth_token.scope, ["admin", "user"])
self.assertEqual(oauth_token.tokens, ["user"])

self.assertNotEqual(id(oauth_token), id(oauth_token_p))
self.assertEqual(oauth_token.id, oauth_token_p.id)
self.assertEqual(oauth_token.access_token, oauth_token_p.access_token)
self.assertEqual(oauth_token.authorization_code, oauth_token_p.authorization_code)
self.assertEqual(oauth_token.authorization_code_date, oauth_token_p.authorization_code_date)

0 comments on commit 3a030c7

Please sign in to comment.