sefrone-api-e2e 1.2.5__tar.gz → 1.2.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/PKG-INFO +1 -1
  2. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e/e2e/Scenarios/Auth/4_workspace_endpoints.yaml +3 -1
  3. sefrone_api_e2e-1.2.6/sefrone_api_e2e/e2e/Scenarios/Auth/8_temporary_passwords_flow.yaml +219 -0
  4. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e.egg-info/PKG-INFO +1 -1
  5. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e.egg-info/SOURCES.txt +2 -1
  6. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/setup.py +1 -1
  7. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/README.md +0 -0
  8. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e/__init__.py +0 -0
  9. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e/api_e2e_manager.py +0 -0
  10. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e/e2e/Scenarios/Auth/0_check_features.yaml +0 -0
  11. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e/e2e/Scenarios/Auth/1_normal_auth_flow.yaml +0 -0
  12. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e/e2e/Scenarios/Auth/2_account_endpoints.yaml +0 -0
  13. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e/e2e/Scenarios/Auth/3_admin_account_endpoints.yaml +0 -0
  14. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e/e2e/Scenarios/Auth/5_apikey_endpoints.yaml +0 -0
  15. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e/e2e/Scenarios/Auth/6_project_endpoints.yaml +0 -0
  16. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e/e2e/Scenarios/Auth/7_email_2fa_flow.yaml +0 -0
  17. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e/e2e_scenarios_manager.py +0 -0
  18. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e/env_patch.py +0 -0
  19. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e/json_mock_server.py +0 -0
  20. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e/runner_assets.py +0 -0
  21. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e/runner_email_mock.py +0 -0
  22. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e/runner_rest_api.py +0 -0
  23. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e/runner_satim_mock.py +0 -0
  24. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e/runner_webhook_mock.py +0 -0
  25. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e/step_runner.py +0 -0
  26. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e.egg-info/dependency_links.txt +0 -0
  27. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e.egg-info/requires.txt +0 -0
  28. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/sefrone_api_e2e.egg-info/top_level.txt +0 -0
  29. {sefrone_api_e2e-1.2.5 → sefrone_api_e2e-1.2.6}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sefrone_api_e2e
3
- Version: 1.2.5
3
+ Version: 1.2.6
4
4
  Summary: A Python package to provide e2e testing helpers for sefrone API projects
5
5
  Home-page: https://bitbucket.org/sefrone/sefrone_pypi
6
6
  Author: Sefrone
@@ -179,7 +179,9 @@ steps:
179
179
 
180
180
  - name: "Register standard test account"
181
181
  method: "POST"
182
- endpoint: "/api/v1/apiAuth/account/$var(AUTH_PROJECT_NAME)"
182
+ endpoint: "/api/v1/apiAuth/account/$var(AUTH_PROJECT_NAME)/create"
183
+ request_headers:
184
+ - x-api-token: "{$stored.admin_token}"
183
185
  send_as: "json"
184
186
  body:
185
187
  username: "e2e_ws_std_{$stored.seed_account_id}"
@@ -0,0 +1,219 @@
1
+ name: "Temporary Passwords Flow"
2
+ base_url: "http://localhost:$var(API_PUBLIC_PORT)"
3
+
4
+ # This scenario requires the TemporaryCredentials feature to be registered.
5
+ skip_if:
6
+ - "TemporaryCredentials not in {$stored.0_check_features.enabled_features}"
7
+
8
+ steps:
9
+ - name: "Login root admin"
10
+ retry:
11
+ attempts: 10
12
+ delay_seconds: 5
13
+ method: "POST"
14
+ endpoint: "/api/v1/apiAuth/account/$var(AUTH_PROJECT_NAME)/login"
15
+ send_as: "json"
16
+ body:
17
+ device: "e2e_test_device"
18
+ pseudo: "$var(DEFAULT_USERNAME)"
19
+ password: "$var(DEFAULT_PASSWORD)"
20
+ expect:
21
+ status: 200
22
+ body:
23
+ response:
24
+ token: string
25
+ save:
26
+ root_admin_token: "{{body.response.token}}"
27
+
28
+ - name: "Generate unique test suffix"
29
+ randomize:
30
+ seed_id: 8
31
+
32
+ - name: "Create temporary credential"
33
+ method: "POST"
34
+ endpoint: "/api/v1/apiAuth/account/$var(AUTH_PROJECT_NAME)/temp-credentials/create"
35
+ request_headers:
36
+ - x-api-token: "{$stored.root_admin_token}"
37
+ send_as: "json"
38
+ body:
39
+ password: "e2e_temp_pwd_{$stored.seed_id}"
40
+ label: "e2e temp credential {$stored.seed_id}"
41
+ expiresAt: "$date(+1,end)"
42
+ expect:
43
+ status: 200
44
+ body:
45
+ errorCode: number
46
+ errorCodeStr: string
47
+ message: string
48
+ response:
49
+ id: string
50
+ label: string
51
+ expiresAt: datetime
52
+ createdAt: datetime
53
+ save:
54
+ temp_credential_id: "{{body.response.id}}"
55
+ assertions:
56
+ - "{{body.response.label}} == 'e2e temp credential {$stored.seed_id}'"
57
+
58
+ - name: "List temporary credentials shows the created one"
59
+ method: "GET"
60
+ endpoint: "/api/v1/apiAuth/account/$var(AUTH_PROJECT_NAME)/temp-credentials/list"
61
+ request_headers:
62
+ - x-api-token: "{$stored.root_admin_token}"
63
+ expect:
64
+ status: 200
65
+ body:
66
+ errorCode: number
67
+ errorCodeStr: string
68
+ message: string
69
+ response:
70
+ - id: string
71
+ label: string
72
+ expiresAt: datetime
73
+ createdAt: datetime
74
+ assertions:
75
+ - "{{body.response.count()}} == 1"
76
+ - "{{body.response[0].id}} == '{$stored.temp_credential_id}'"
77
+
78
+ - name: "Login with original password still works"
79
+ method: "POST"
80
+ endpoint: "/api/v1/apiAuth/account/$var(AUTH_PROJECT_NAME)/login"
81
+ send_as: "json"
82
+ body:
83
+ device: "e2e_test_device"
84
+ pseudo: "$var(DEFAULT_USERNAME)"
85
+ password: "$var(DEFAULT_PASSWORD)"
86
+ expect:
87
+ status: 200
88
+ body:
89
+ response:
90
+ token: string
91
+
92
+ - name: "Login with the temporary password succeeds"
93
+ method: "POST"
94
+ endpoint: "/api/v1/apiAuth/account/$var(AUTH_PROJECT_NAME)/login"
95
+ send_as: "json"
96
+ body:
97
+ device: "e2e_test_device"
98
+ pseudo: "$var(DEFAULT_USERNAME)"
99
+ password: "e2e_temp_pwd_{$stored.seed_id}"
100
+ expect:
101
+ status: 200
102
+ body:
103
+ errorCode: number
104
+ errorCodeStr: string
105
+ message: string
106
+ response:
107
+ token: string
108
+ save:
109
+ temp_login_token: "{{body.response.token}}"
110
+ assertions:
111
+ - "{{body.errorCode}} == 0"
112
+
113
+ - name: "Temporary password token is valid - get account info"
114
+ method: "GET"
115
+ endpoint: "/api/v1/apiAuth/account/$var(AUTH_PROJECT_NAME)/info/{$stored.temp_login_token}"
116
+ expect:
117
+ status: 200
118
+ body:
119
+ response:
120
+ accountId: string
121
+ username: string
122
+ assertions:
123
+ - "{{body.response.username}} == '$var(DEFAULT_USERNAME)'"
124
+
125
+ - name: "Revoke temporary credential"
126
+ method: "POST"
127
+ endpoint: "/api/v1/apiAuth/account/$var(AUTH_PROJECT_NAME)/temp-credentials/{$stored.temp_credential_id}/revoke"
128
+ request_headers:
129
+ - x-api-token: "{$stored.temp_login_token}"
130
+ expect:
131
+ status: 200
132
+ body:
133
+ errorCode: number
134
+ errorCodeStr: string
135
+ message: string
136
+
137
+ - name: "List temporary credentials is empty after revoke"
138
+ method: "GET"
139
+ endpoint: "/api/v1/apiAuth/account/$var(AUTH_PROJECT_NAME)/temp-credentials/list"
140
+ request_headers:
141
+ - x-api-token: "{$stored.temp_login_token}"
142
+ expect:
143
+ status: 200
144
+ body:
145
+ response: []
146
+ assertions:
147
+ - "{{body.response.count()}} == 0"
148
+
149
+ - name: "Login with revoked temporary password fails"
150
+ method: "POST"
151
+ endpoint: "/api/v1/apiAuth/account/$var(AUTH_PROJECT_NAME)/login"
152
+ send_as: "json"
153
+ body:
154
+ device: "e2e_test_device"
155
+ pseudo: "$var(DEFAULT_USERNAME)"
156
+ password: "e2e_temp_pwd_{$stored.seed_id}"
157
+ expect:
158
+ status: 401
159
+ body:
160
+ errorCode: number
161
+ errorCodeStr: string
162
+ message: string
163
+
164
+ - name: "Revoking an already-revoked temporary credential returns not found"
165
+ method: "POST"
166
+ endpoint: "/api/v1/apiAuth/account/$var(AUTH_PROJECT_NAME)/temp-credentials/{$stored.temp_credential_id}/revoke"
167
+ request_headers:
168
+ - x-api-token: "{$stored.temp_login_token}"
169
+ expect:
170
+ status: 404
171
+ body:
172
+ errorCode: number
173
+ errorCodeStr: string
174
+ message: string
175
+
176
+ - name: "Create an already expired temporary credential"
177
+ method: "POST"
178
+ endpoint: "/api/v1/apiAuth/account/$var(AUTH_PROJECT_NAME)/temp-credentials/create"
179
+ request_headers:
180
+ - x-api-token: "{$stored.temp_login_token}"
181
+ send_as: "json"
182
+ body:
183
+ password: "e2e_expired_pwd_{$stored.seed_id}"
184
+ label: "e2e expired credential {$stored.seed_id}"
185
+ expiresAt: "$date(-1)"
186
+ expect:
187
+ status: 200
188
+ body:
189
+ response:
190
+ id: string
191
+ save:
192
+ expired_credential_id: "{{body.response.id}}"
193
+
194
+ - name: "Login with an expired temporary password fails"
195
+ method: "POST"
196
+ endpoint: "/api/v1/apiAuth/account/$var(AUTH_PROJECT_NAME)/login"
197
+ send_as: "json"
198
+ body:
199
+ device: "e2e_test_device"
200
+ pseudo: "$var(DEFAULT_USERNAME)"
201
+ password: "e2e_expired_pwd_{$stored.seed_id}"
202
+ expect:
203
+ status: 401
204
+ body:
205
+ errorCode: number
206
+ errorCodeStr: string
207
+ message: string
208
+
209
+ - name: "Cleanup: revoke expired temporary credential"
210
+ method: "POST"
211
+ endpoint: "/api/v1/apiAuth/account/$var(AUTH_PROJECT_NAME)/temp-credentials/{$stored.expired_credential_id}/revoke"
212
+ request_headers:
213
+ - x-api-token: "{$stored.temp_login_token}"
214
+ expect:
215
+ status: 200
216
+ body:
217
+ errorCode: number
218
+ errorCodeStr: string
219
+ message: string
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sefrone_api_e2e
3
- Version: 1.2.5
3
+ Version: 1.2.6
4
4
  Summary: A Python package to provide e2e testing helpers for sefrone API projects
5
5
  Home-page: https://bitbucket.org/sefrone/sefrone_pypi
6
6
  Author: Sefrone
@@ -23,4 +23,5 @@ sefrone_api_e2e/e2e/Scenarios/Auth/3_admin_account_endpoints.yaml
23
23
  sefrone_api_e2e/e2e/Scenarios/Auth/4_workspace_endpoints.yaml
24
24
  sefrone_api_e2e/e2e/Scenarios/Auth/5_apikey_endpoints.yaml
25
25
  sefrone_api_e2e/e2e/Scenarios/Auth/6_project_endpoints.yaml
26
- sefrone_api_e2e/e2e/Scenarios/Auth/7_email_2fa_flow.yaml
26
+ sefrone_api_e2e/e2e/Scenarios/Auth/7_email_2fa_flow.yaml
27
+ sefrone_api_e2e/e2e/Scenarios/Auth/8_temporary_passwords_flow.yaml
@@ -5,7 +5,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
5
5
 
6
6
  setup(
7
7
  name="sefrone_api_e2e",
8
- version="1.2.5",
8
+ version="1.2.6",
9
9
  author="Sefrone",
10
10
  author_email="contact@sefrone.com",
11
11
  description="A Python package to provide e2e testing helpers for sefrone API projects",