Skip to content

Commit 16eb528

Browse files
Narek MkhitaryanNarek Mkhitaryan
authored andcommitted
changes in SDK auth flow
1 parent 3ddbd3b commit 16eb528

File tree

5 files changed

+38
-44
lines changed

5 files changed

+38
-44
lines changed

src/superannotate/lib/app/interface/base_interface.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -132,11 +132,11 @@ def get_mp_instance(self) -> Mixpanel:
132132
return Mixpanel(mp_token)
133133

134134
@staticmethod
135-
def get_default_payload(team_name, user_id):
135+
def get_default_payload(team_name, user_email):
136136
return {
137137
"SDK": True,
138138
"Team": team_name,
139-
"Team Owner": user_id,
139+
"User Email": user_email,
140140
"Version": __version__,
141141
"Python version": platform.python_version(),
142142
"Python interpreter type": platform.python_implementation(),
@@ -207,13 +207,13 @@ def _track_method(self, args, kwargs, success: bool):
207207
function_name = self.function.__name__ if self.function else ""
208208
arguments = self.extract_arguments(self.function, *args, **kwargs)
209209
event_name, properties = self.default_parser(function_name, arguments)
210-
user_id = client.controller.current_user.email
210+
user_email = client.controller.current_user.email
211211
team_name = client.controller.team_data.name
212212

213213
properties["Success"] = success
214-
default = self.get_default_payload(team_name=team_name, user_id=user_id)
214+
default = self.get_default_payload(team_name=team_name, user_email=user_email)
215215
self._track(
216-
user_id,
216+
user_email,
217217
event_name,
218218
{**default, **properties, **CONFIG.get_current_session().data},
219219
)

src/superannotate/lib/core/entities/project.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,6 @@ class UserEntity(BaseModel):
169169
first_name: Optional[str]
170170
last_name: Optional[str]
171171
email: Optional[str]
172-
picture: Optional[str]
173172
user_role: Optional[int]
174173

175174
class Config:

src/superannotate/lib/core/usecases/projects.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -616,15 +616,13 @@ def __init__(self, service_provider: BaseServiceProvider, team_id: int):
616616
self._team_id = team_id
617617

618618
def execute(self):
619-
try:
620-
response = self._service_provider.get_user(self._team_id)
621-
if not response.ok:
622-
raise AppException(response.error)
623-
self._response.data = response.data
624-
except Exception:
625-
raise AppException(
619+
response = self._service_provider.get_user(self._team_id)
620+
if not response.ok:
621+
self._response.errors = AppException(
626622
"Unable to retrieve user data. Please verify your credentials."
627-
) from None
623+
)
624+
else:
625+
self._response.data = response.data
628626
return self._response
629627

630628

src/superannotate/lib/infrastructure/controller.py

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -796,7 +796,7 @@ def __init__(self, config: ConfigEntity):
796796

797797
self.service_provider = ServiceProvider(http_client)
798798
self._team = self.get_team().data
799-
self._user = self.get_current_user().data
799+
self._user = self.get_current_user()
800800
self.annotation_classes = AnnotationClassManager(self.service_provider)
801801
self.projects = ProjectManager(self.service_provider)
802802
self.folders = FolderManager(self.service_provider)
@@ -811,14 +811,6 @@ def __init__(self, config: ConfigEntity):
811811
def current_user(self):
812812
return self._user
813813

814-
@staticmethod
815-
def validate_token(token: str):
816-
try:
817-
int(token.split("=")[-1])
818-
except ValueError:
819-
raise AppException("Invalid token.")
820-
return token
821-
822814
@property
823815
def user_id(self):
824816
if not self._user_id:
@@ -834,10 +826,13 @@ def get_team(self):
834826
service_provider=self.service_provider, team_id=self.team_id
835827
).execute()
836828

837-
def get_current_user(self):
838-
return usecases.GetCurrentUserUseCase(
829+
def get_current_user(self) -> UserEntity:
830+
response = usecases.GetCurrentUserUseCase(
839831
service_provider=self.service_provider, team_id=self.team_id
840832
).execute()
833+
if response.errors:
834+
raise AppException(response.errors)
835+
return response.data
841836

842837
@property
843838
def team_data(self):

tests/integration/mixpanel/test_mixpanel_decorator.py

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@
1212
from src.superannotate import SAClient
1313

1414

15+
sa = SAClient()
16+
17+
1518
class TestMixpanel(TestCase):
16-
CLIENT = SAClient()
1719
BLANK_PAYLOAD = {
1820
"SDK": True,
19-
"Team": CLIENT.get_team_metadata()["name"],
20-
"Team Owner": CLIENT.controller.current_user.email,
21+
"Team": sa.get_team_metadata()["name"],
22+
"User Email": sa.controller.current_user.email,
2123
"Version": __version__,
2224
"Success": True,
2325
"Python version": platform.python_version(),
@@ -32,7 +34,7 @@ class TestMixpanel(TestCase):
3234
def setUpClass(cls) -> None:
3335
cls.tearDownClass()
3436
print(cls.PROJECT_NAME)
35-
cls._project = cls.CLIENT.create_project(
37+
cls._project = sa.create_project(
3638
cls.PROJECT_NAME, cls.PROJECT_DESCRIPTION, cls.PROJECT_TYPE
3739
)
3840

@@ -42,10 +44,10 @@ def tearDownClass(cls) -> None:
4244

4345
@classmethod
4446
def _safe_delete_project(cls, project_name):
45-
projects = cls.CLIENT.search_projects(project_name, return_metadata=True)
47+
projects = sa.search_projects(project_name, return_metadata=True)
4648
for project in projects:
4749
try:
48-
cls.CLIENT.delete_project(project)
50+
sa.delete_project(project)
4951
except Exception:
5052
raise
5153

@@ -64,9 +66,9 @@ def test_init(self, track_method):
6466

6567
@patch("lib.app.interface.base_interface.Tracker._track")
6668
@patch("lib.core.usecases.GetTeamUseCase")
67-
@patch("lib.core.usecases.GetCurrentUserUseCase")
69+
@patch("lib.infrastructure.serviceprovider.ServiceProvider.get_user")
6870
def test_init_via_token(
69-
self, get_current_user_use_case, get_team_use_case, track_method
71+
self, get_user, get_team_use_case, track_method
7072
):
7173
SAClient(token="test=3232")
7274
result = list(track_method.call_args)[0]
@@ -76,17 +78,17 @@ def test_init_via_token(
7678
"sa_token": "True",
7779
"config_path": "False",
7880
"Team": get_team_use_case().execute().data.name,
79-
"Team Owner": get_current_user_use_case().execute().data.email,
81+
"User Email": get_user().data.email,
8082
}
8183
)
8284
assert result[1] == "__init__"
8385
assert payload == result[2]
8486

8587
@patch("lib.app.interface.base_interface.Tracker._track")
8688
@patch("lib.core.usecases.GetTeamUseCase")
87-
@patch("lib.core.usecases.GetCurrentUserUseCase")
89+
@patch("lib.infrastructure.serviceprovider.ServiceProvider.get_user")
8890
def test_init_via_config_file(
89-
self, get_current_user_use_case, get_team_use_case, track_method
91+
self, get_user, get_team_use_case, track_method
9092
):
9193
with tempfile.TemporaryDirectory() as config_dir:
9294
config_ini_path = f"{config_dir}/config.ini"
@@ -104,16 +106,16 @@ def test_init_via_config_file(
104106
"sa_token": "False",
105107
"config_path": "True",
106108
"Team": get_team_use_case().execute().data.name,
107-
"Team Owner": get_current_user_use_case().execute().data.email,
109+
"User Email": get_user().data.email,
108110
}
109111
)
110112
assert result[1] == "__init__"
111113
assert payload == result[2]
112114

113115
@patch("lib.app.interface.base_interface.Tracker._track")
114116
def test_get_team_metadata(self, track_method):
115-
self.CLIENT.get_team_metadata()
116-
team_owner = self.CLIENT.controller.current_user.email
117+
sa.get_team_metadata()
118+
team_owner = sa.controller.current_user.email
117119
result = list(track_method.call_args)[0]
118120
payload = self.default_payload
119121
assert result[0] == team_owner
@@ -128,7 +130,7 @@ def test_search_team_contributors(self, track_method):
128130
"last_name": "last_name",
129131
"return_metadata": False,
130132
}
131-
self.CLIENT.search_team_contributors(**kwargs)
133+
sa.search_team_contributors(**kwargs)
132134
result = list(track_method.call_args)[0]
133135
payload = self.default_payload
134136
payload.update(kwargs)
@@ -143,7 +145,7 @@ def test_search_projects(self, track_method):
143145
"status": "NotStarted",
144146
"return_metadata": False,
145147
}
146-
self.CLIENT.search_projects(**kwargs)
148+
sa.search_projects(**kwargs)
147149
result = list(track_method.call_args)[0]
148150
payload = self.default_payload
149151
payload.update(kwargs)
@@ -162,7 +164,7 @@ def test_create_project(self, track_method):
162164
"instructions_link": None,
163165
}
164166
try:
165-
self.CLIENT.create_project(**kwargs)
167+
sa.create_project(**kwargs)
166168
except AppException:
167169
pass
168170
result = list(track_method.call_args)[0]
@@ -190,10 +192,10 @@ def test_create_project_multi_thread(self, track_method):
190192
"project_type": self.PROJECT_TYPE,
191193
}
192194
thread_1 = threading.Thread(
193-
target=self.CLIENT.create_project, kwargs=kwargs_1
195+
target=sa.create_project, kwargs=kwargs_1
194196
)
195197
thread_2 = threading.Thread(
196-
target=self.CLIENT.create_project, kwargs=kwargs_2
198+
target=sa.create_project, kwargs=kwargs_2
197199
)
198200
thread_1.start()
199201
thread_2.start()

0 commit comments

Comments
 (0)