From ec5743759334763c0fb9f6330021b0e66b704ba4 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Mon, 5 Feb 2024 10:02:31 -0800 Subject: [PATCH] Add coverage for squirrely serializer method --- src/documents/tests/test_api_profile.py | 91 ++++++++++++++++++++++++- 1 file changed, 90 insertions(+), 1 deletion(-) diff --git a/src/documents/tests/test_api_profile.py b/src/documents/tests/test_api_profile.py index 7d9b934c9..cb143ad15 100644 --- a/src/documents/tests/test_api_profile.py +++ b/src/documents/tests/test_api_profile.py @@ -26,6 +26,15 @@ class MockOpenIDProvider: return "openid/login/" +# see allauth.socialaccount.providers.openid_connect.provider.OpenIDConnectProviderAccount +class MockOpenIDConnectProviderAccount: + def __init__(self, mock_social_account_dict): + self.account = mock_social_account_dict + + def to_str(self): + return self.account["name"] + + # see allauth.socialaccount.providers.openid_connect.provider.OpenIDConnectProvider class MockOpenIDConnectProvider: id = "openid_connect" @@ -72,7 +81,6 @@ class TestApiProfile(DirectoriesMixin, APITestCase): THEN: - Profile is returned """ - response = self.client.get(self.ENDPOINT) self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -81,6 +89,52 @@ class TestApiProfile(DirectoriesMixin, APITestCase): self.assertEqual(response.data["first_name"], self.user.first_name) self.assertEqual(response.data["last_name"], self.user.last_name) + @mock.patch( + "allauth.socialaccount.models.SocialAccount.get_provider_account", + ) + @mock.patch( + "allauth.socialaccount.adapter.DefaultSocialAccountAdapter.list_providers", + ) + def test_get_profile_w_social(self, mock_list_providers, mock_get_provider_account): + """ + GIVEN: + - Configured user and setup social account + WHEN: + - API call is made to get profile + THEN: + - Profile is returned with social accounts + """ + self.setupSocialAccount() + + openid_provider = ( + MockOpenIDConnectProvider( + app=SocialApp.objects.get(provider_id="keycloak-test"), + ), + ) + mock_list_providers.return_value = [ + openid_provider, + ] + mock_get_provider_account.return_value = MockOpenIDConnectProviderAccount( + mock_social_account_dict={ + "name": openid_provider[0].name, + }, + ) + + response = self.client.get(self.ENDPOINT) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + + self.assertEqual( + response.data["social_accounts"], + [ + { + "id": 1, + "provider": "keycloak-test", + "name": "Keycloak", + }, + ], + ) + def test_update_profile(self): """ GIVEN: @@ -211,6 +265,41 @@ class TestApiProfile(DirectoriesMixin, APITestCase): 2, ) + # @mock.patch( + # "allauth.socialaccount.adapter.DefaultSocialAccountAdapter.list_providers", + # ) + # def test_get_social_accounts( + # self, + # mock_list_providers, + # ): + # """ + # GIVEN: + # - Configured user + # WHEN: + # - API call is made to get social account providers + # THEN: + # - Social account providers are returned + # """ + # self.setupSocialAccount() + + # mock_list_providers.return_value = [ + # MockOpenIDConnectProvider( + # app=SocialApp.objects.get(provider_id="keycloak-test"), + # ), + # ] + + # response = self.client.get(f"{self.ENDPOINT}social_accounts/") + + # self.assertEqual(response.status_code, status.HTTP_200_OK) + # self.assertEqual( + # response.data[0]["name"], + # "Keycloak", + # ) + # self.assertIn( + # "keycloak-test/login/?process=connect", + # response.data[0]["login_url"], + # ) + def test_disconnect_social_account(self): """ GIVEN: