---
|
test_name: sessions
|
strict: false
|
marks:
|
- usefixtures:
|
- django_live_url
|
- freeze_clock
|
stages:
|
- id: signup
|
name: Sign up
|
request:
|
url: "{django_live_url}/user/signup"
|
data:
|
email: test_suites_user@heartex.com
|
password: 12345678
|
method: POST
|
response:
|
status_code: 302
|
|
- id: login
|
name: Login
|
request:
|
url: "{django_live_url}/user/login"
|
data:
|
email: test_suites_user@heartex.com
|
password: 12345678
|
method: POST
|
response:
|
status_code: 302
|
|
# Configure session timeout policy for the user's organization
|
- id: get_session_policy
|
name: Get Session Policy
|
request:
|
url: "{django_live_url}/api/session-policy/"
|
method: GET
|
response:
|
status_code: 200
|
|
- id: set_session_policy
|
name: Set Session Policy (short)
|
request:
|
url: "{django_live_url}/api/session-policy/"
|
method: PATCH
|
headers:
|
Content-Type: application/json
|
json:
|
max_session_age: 1 # 1 minute total age
|
max_time_between_activity: 1 # 1 minute idle time
|
response:
|
status_code: 200
|
|
# A request right after login should be sucessful
|
- name: get_projects
|
request:
|
method: POST
|
url: '{django_live_url}/api/projects'
|
response:
|
save:
|
json:
|
pk: id
|
status_code: 201
|
# hack to let us call a function after each stage
|
verify_response_with:
|
- function: label_studio.tests.conftest:tick_clock
|
extra_kwargs:
|
seconds: 65
|
|
# After max_time_between_activity has passed, the session will be over and requests will be denied
|
- name: get_projects
|
request:
|
method: POST
|
url: '{django_live_url}/api/projects'
|
response:
|
save:
|
json:
|
pk: id
|
status_code: 401
|
|
# login again
|
- id: login
|
name: Login
|
request:
|
url: "{django_live_url}/user/login"
|
data:
|
email: test_suites_user@heartex.com
|
password: 12345678
|
method: POST
|
response:
|
status_code: 302
|
verify_response_with:
|
function: label_studio.tests.conftest:tick_clock
|
|
# make another request within max_time_between_activity
|
- name: get_projects_1
|
request:
|
method: POST
|
url: '{django_live_url}/api/projects'
|
response:
|
save:
|
json:
|
pk: id
|
status_code: 201
|
verify_response_with:
|
function: label_studio.tests.conftest:tick_clock
|
|
# and five more
|
- name: get_projects_2
|
request:
|
method: POST
|
url: '{django_live_url}/api/projects'
|
response:
|
save:
|
json:
|
pk: id
|
status_code: 201
|
verify_response_with:
|
function: label_studio.tests.conftest:tick_clock
|
|
- name: get_projects_3
|
request:
|
method: POST
|
url: '{django_live_url}/api/projects'
|
response:
|
save:
|
json:
|
pk: id
|
status_code: 201
|
verify_response_with:
|
function: label_studio.tests.conftest:tick_clock
|
|
- name: get_projects_4
|
request:
|
method: POST
|
url: '{django_live_url}/api/projects'
|
response:
|
save:
|
json:
|
pk: id
|
status_code: 201
|
verify_response_with:
|
- function: label_studio.tests.conftest:tick_clock
|
extra_kwargs:
|
seconds: 65
|
|
# and by now we reach MAX_SESSION_AGE and hte session end even if we were active
|
- name: get_projects_5
|
request:
|
method: POST
|
url: '{django_live_url}/api/projects'
|
response:
|
save:
|
json:
|
pk: id
|
status_code: 401
|