Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Kontr 2.0
Portal API Backend
Commits
416074ac
Verified
Commit
416074ac
authored
Oct 01, 2018
by
Peter Stanko
Browse files
Fixtures for tests
parent
93b14274
Pipeline
#14414
passed with stage
in 30 minutes and 50 seconds
Changes
5
Pipelines
1
Show whitespace changes
Inline
Side-by-side
management/data/data_test.py
View file @
416074ac
from
datetime
import
timedelta
from
flask
import
Flask
from
flask_sqlalchemy
import
SQLAlchemy
from
management.data.shared
import
DataFactory
from
portal.database.models
import
Review
,
Submission
,
SubmissionState
,
Secret
from
portal.database.models
import
Review
,
Secret
,
Submission
,
SubmissionState
from
portal.tools
import
time
...
...
@@ -19,81 +20,33 @@ def init_test_data(app: Flask, db: SQLAlchemy):
name
=
'Teacher Only'
,
uco
=
1002
)
teacher1
.
secrets
.
append
(
Secret
(
'teacher1_secret'
,
'ultimate_teacher_secret'
))
lecturer1
=
factory
.
create_user
(
username
=
'lecturer1'
,
name
=
'Courses Owner'
,
password
=
'654321'
,
uco
=
1010
)
lecturer1
=
factory
.
create_user
(
username
=
'lecturer1'
,
name
=
'Courses Owner'
,
uco
=
1010
)
# courses
test_course1
=
factory
.
create_course
(
codename
=
'testcourse1'
,
name
=
'Test Course One'
)
test_course2
=
factory
.
create_course
(
codename
=
'testcourse2'
,
name
=
'test Course Two'
)
test_course1
=
factory
.
create_course
(
codename
=
'testcourse1'
,
name
=
'Test Course One'
)
test_course2
=
factory
.
create_course
(
codename
=
'testcourse2'
,
name
=
'test Course Two'
)
# groups
tc1_students
=
factory
.
create_group
(
course
=
test_course1
,
name
=
"seminar01"
)
tc1_teachers
=
factory
.
create_group
(
course
=
test_course1
,
name
=
"teachers"
)
tc2_students
=
factory
.
create_group
(
course
=
test_course2
,
name
=
"seminar01"
)
tc2_teachers
=
factory
.
create_group
(
course
=
test_course2
,
name
=
"teachers"
)
tc1_hw01
=
factory
.
create_project
(
course
=
test_course1
,
name
=
"HW01"
,
codename
=
'hw01'
,
config
=
dict
(
file_whitelist
=
"main.cpp"
,
pre_submit_script
=
"python for kontr pre"
,
post_submit_script
=
"python for kontr post"
,
submission_scheduler_config
=
"python for sub Q"
,
submission_parameters
=
"{
\"
type
\"
:
\"
text
\"
}"
,
submissions_allowed_from
=
time
.
current_time
(),
submissions_allowed_to
=
time
.
current_time
()
+
timedelta
(
days
=
2
),
archive_from
=
time
.
current_time
()
+
timedelta
(
days
=
30
)
)
)
tc1_hw02
=
factory
.
create_project
(
course
=
test_course1
,
name
=
"HW02"
,
codename
=
'HW02'
,
config
=
dict
(
file_whitelist
=
"main.cpp
\n
func.hpp
\n
func.cpp"
,
pre_submit_script
=
"python for kontr pre"
,
post_submit_script
=
"python for kontr post"
,
submission_scheduler_config
=
"python for sub Q"
,
submission_parameters
=
"{
\"
type
\"
:
\"
text
\"
}"
,
submissions_allowed_from
=
time
.
current_time
()
-
timedelta
(
days
=
1
),
submissions_allowed_to
=
time
.
current_time
()
+
timedelta
(
days
=
10
),
archive_from
=
time
.
current_time
()
+
timedelta
(
days
=
30
)
)
)
tc2_hw01
=
factory
.
create_project
(
course
=
test_course2
,
name
=
"HW01"
,
codename
=
'hw01'
,
config
=
dict
(
file_whitelist
=
"main.c"
,
pre_submit_script
=
"python for kontr pre"
,
post_submit_script
=
"python for kontr post"
,
submission_scheduler_config
=
"python for sub Q"
,
submission_parameters
=
"{
\"
type
\"
:
\"
text
\"
}"
,
submissions_allowed_from
=
time
.
current_time
()
-
timedelta
(
days
=
1
),
submissions_allowed_to
=
time
.
current_time
()
-
timedelta
(
minutes
=
1
),
archive_from
=
time
.
current_time
()
+
timedelta
(
days
=
30
)
)
)
tc1_students
=
factory
.
create_group
(
course
=
test_course1
,
name
=
"seminar01"
)
tc1_teachers
=
factory
.
create_group
(
course
=
test_course1
,
name
=
"teachers"
)
tc2_students
=
factory
.
create_group
(
course
=
test_course2
,
name
=
"seminar01"
)
tc2_teachers
=
factory
.
create_group
(
course
=
test_course2
,
name
=
"teachers"
)
tc1_hw01
=
factory
.
scaffold_project
(
test_course1
,
'hw01'
)
tc1_hw02
=
factory
.
scaffold_project
(
test_course1
,
'hw02'
)
tc2_hw01
=
factory
.
scaffold_project
(
test_course2
,
'hw01'
)
tc2_hw01
=
factory
.
scaffold_project
(
test_course2
,
'hw02'
)
# roles
tc1_student
=
factory
.
scaffold_role
(
role_type
=
'student'
,
course
=
test_course1
)
tc1_teacher
=
factory
.
scaffold_role
(
role_type
=
'teacher'
,
course
=
test_course1
)
tc1_owner
=
factory
.
scaffold_role
(
role_type
=
'owner'
,
course
=
test_course1
)
tc2_student
=
factory
.
scaffold_role
(
role_type
=
'student'
,
course
=
test_course2
)
tc2_teacher
=
factory
.
scaffold_role
(
role_type
=
'teacher'
,
course
=
test_course2
)
tc2_owner
=
factory
.
scaffold_role
(
role_type
=
'owner'
,
course
=
test_course2
)
tc1_student
=
factory
.
scaffold_role
(
role_type
=
'student'
,
course
=
test_course1
)
tc1_teacher
=
factory
.
scaffold_role
(
role_type
=
'teacher'
,
course
=
test_course1
)
tc1_owner
=
factory
.
scaffold_role
(
role_type
=
'owner'
,
course
=
test_course1
)
tc2_student
=
factory
.
scaffold_role
(
role_type
=
'student'
,
course
=
test_course2
)
tc2_teacher
=
factory
.
scaffold_role
(
role_type
=
'teacher'
,
course
=
test_course2
)
tc2_owner
=
factory
.
scaffold_role
(
role_type
=
'owner'
,
course
=
test_course2
)
# relationships
teacher_student
=
teacher1
...
...
@@ -120,24 +73,18 @@ def init_test_data(app: Flask, db: SQLAlchemy):
student_both
.
groups
.
append
(
tc2_students
)
# submissions
tc2_sub1
=
Submission
(
user
=
teacher_student
,
project
=
tc2_hw01
,
parameters
=
""
)
tc2_sub1
=
Submission
(
user
=
teacher_student
,
project
=
tc2_hw01
,
parameters
=
{})
tc2_sub1
.
state
=
SubmissionState
.
FINISHED
tc2_sub2
=
Submission
(
user
=
student_both
,
project
=
tc2_hw01
,
parameters
=
""
)
tc2_sub2
=
Submission
(
user
=
student_both
,
project
=
tc2_hw01
,
parameters
=
{})
tc2_sub2
.
state
=
SubmissionState
.
ABORTED
tc1_sub_p1_cancel
=
Submission
(
user
=
student_both
,
project
=
tc1_hw01
,
parameters
=
""
)
tc1_sub_p1_cancel
=
Submission
(
user
=
student_both
,
project
=
tc1_hw01
,
parameters
=
{})
tc1_sub_p1_cancel
.
state
=
SubmissionState
.
CANCELLED
tc1_sub_p1_abort
=
Submission
(
user
=
student_tc1
,
project
=
tc1_hw01
,
parameters
=
""
)
tc1_sub_p1_abort
=
Submission
(
user
=
student_tc1
,
project
=
tc1_hw01
,
parameters
=
{})
tc1_sub_p1_abort
.
state
=
SubmissionState
.
ABORTED
tc1_sub_p1_finished
=
Submission
(
user
=
student_both
,
project
=
tc1_hw01
,
parameters
=
""
)
tc1_sub_p1_finished
=
Submission
(
user
=
student_both
,
project
=
tc1_hw01
,
parameters
=
{})
tc1_sub_p1_finished
.
state
=
SubmissionState
.
FINISHED
tc1_sub_p1_in_progress
=
Submission
(
user
=
student_tc1
,
project
=
tc1_hw01
,
parameters
=
""
)
tc1_sub_p1_in_progress
=
Submission
(
user
=
student_tc1
,
project
=
tc1_hw01
,
parameters
=
{})
tc1_sub_p1_in_progress
.
state
=
SubmissionState
.
IN_PROGRESS
# Projects in groups
...
...
@@ -152,10 +99,8 @@ def init_test_data(app: Flask, db: SQLAlchemy):
review
=
Review
(
tc2_sub1
)
factory
.
create_review_item
(
author
=
teacher_both
,
review
=
review
,
line
=
1
,
content
=
"problem here"
)
factory
.
create_review_item
(
author
=
teacher_both
,
review
=
review
,
line
=
5
,
content
=
"good stuff"
)
factory
.
create_review_item
(
author
=
teacher_student
,
review
=
review
,
line
=
1
,
content
=
"oops"
)
factory
.
create_review_item
(
author
=
teacher_both
,
review
=
review
,
line
=
5
,
content
=
"good stuff"
)
factory
.
create_review_item
(
author
=
teacher_student
,
review
=
review
,
line
=
1
,
content
=
"oops"
)
db
.
session
.
add_all
([
review
])
...
...
tests/conftest.py
View file @
416074ac
...
...
@@ -32,7 +32,7 @@ def client(app):
@
pytest
.
fixture
()
def
rest_service
():
def
rest_service
(
app
):
from
portal.service.rest
import
RestService
return
RestService
()
...
...
@@ -51,3 +51,53 @@ def mocked_submission(ent_mocker: EntitiesMocker, rest_service):
project_config
:
ProjectConfig
=
submission
.
project
.
config
project_config
.
test_files_commit_hash
=
'some-random-hash'
return
submission
@
pytest
.
fixture
()
def
created_course
(
rest_service
):
return
rest_service
.
find
.
course
(
'testcourse1'
)
@
pytest
.
fixture
()
def
created_course2
(
rest_service
):
return
rest_service
.
find
.
course
(
'testcourse2'
)
@
pytest
.
fixture
()
def
created_project
(
rest_service
,
created_course
):
return
rest_service
.
find
.
project
(
created_course
,
'hw01'
)
@
pytest
.
fixture
()
def
created_role_student
(
rest_service
,
created_course
):
return
rest_service
.
find
.
role
(
created_course
,
'student'
)
@
pytest
.
fixture
()
def
created_role_teacher
(
rest_service
,
created_course
):
return
rest_service
.
find
.
role
(
created_course
,
'teacher'
)
@
pytest
.
fixture
()
def
created_group
(
rest_service
,
created_course
):
return
rest_service
.
find
.
group
(
created_course
,
'seminar01'
)
@
pytest
.
fixture
()
def
created_student
(
rest_service
):
return
rest_service
.
find
.
user
(
'student1'
)
@
pytest
.
fixture
()
def
created_admin
(
rest_service
):
return
rest_service
.
find
.
user
(
'admin'
)
@
pytest
.
fixture
()
def
created_teacher
(
rest_service
):
return
rest_service
.
find
.
user
(
'teacher1'
)
@
pytest
.
fixture
()
def
created_worker
(
rest_service
):
return
rest_service
.
find
.
worker
(
'executor'
)
tests/rest/rest_tools.py
View file @
416074ac
import
json
import
json
as
json_parser
from
datetime
import
datetime
...
...
@@ -12,7 +11,7 @@ from portal.database.models import Course, Group, Project, ProjectConfig, Review
def
get_user_credentials
(
username
,
password
=
'123456'
):
return
json
.
dumps
({
return
json
_parser
.
dumps
({
"type"
:
"username_password"
,
"identifier"
:
username
,
"secret"
:
password
...
...
@@ -20,7 +19,7 @@ def get_user_credentials(username, password='123456'):
def
get_user_secret
(
username
,
secret
):
return
json
.
dumps
({
return
json
_parser
.
dumps
({
"type"
:
"secret"
,
"identifier"
:
username
,
"secret"
:
secret
...
...
@@ -74,7 +73,7 @@ def __get_access_token(client, credentials):
login_resp
=
client
.
post
(
f
"
{
API_PREFIX
}
/auth/login"
,
data
=
credentials
,
headers
=
{
"content-type"
:
"application/json"
})
log
.
debug
(
f
"[RESP]
{
login_resp
}
"
)
resp_data
=
json
.
loads
(
str
(
login_resp
.
get_data
().
decode
(
"utf-8"
)))
resp_data
=
json
_parser
.
loads
(
str
(
login_resp
.
get_data
().
decode
(
"utf-8"
)))
return
resp_data
[
'access_token'
]
...
...
@@ -272,12 +271,12 @@ def assert_review(expected: Review, actual: dict):
# source:
# https://stackoverflow.com/questions/11875770/how-to-overcome-datetime-datetime-not-json-serializable
class
DateTimeEncoder
(
json
.
JSONEncoder
):
class
DateTimeEncoder
(
json
_parser
.
JSONEncoder
):
def
default
(
self
,
o
):
if
isinstance
(
o
,
datetime
):
return
o
.
isoformat
()
return
json
.
JSONEncoder
.
default
(
self
,
o
)
return
json
_parser
.
JSONEncoder
.
default
(
self
,
o
)
def
assert_response
(
response
:
flask
.
Response
,
code
=
200
,
content_type
=
'application/json'
):
...
...
tests/rest/test_role.py
View file @
416074ac
...
...
@@ -3,21 +3,19 @@ from tests.rest.rest_tools import assert_response
from
.
import
rest_tools
def
test_list
(
client
):
cpp
=
Course
.
query
.
filter_by
(
codename
=
"testcourse2"
).
first
()
cpp_roles
=
len
(
cpp
.
roles
)
response
=
rest_tools
.
make_request
(
client
,
f
'/courses/
{
cpp
.
codename
}
/roles'
)
def
test_list
(
client
,
created_course
):
cpp_roles
=
len
(
created_course
.
roles
)
response
=
rest_tools
.
make_request
(
client
,
f
'/courses/
{
created_course
.
codename
}
/roles'
)
assert_response
(
response
,
200
)
roles
=
rest_tools
.
extract_data
(
response
)
assert
len
(
roles
)
==
cpp_roles
cpp_updated
=
Course
.
query
.
filter_by
(
codename
=
"testcourse1"
).
first
()
cpp_updated
=
Course
.
query
.
filter_by
(
codename
=
created_course
.
codename
).
first
()
for
r
in
roles
:
rest_tools
.
assert_role_in
(
cpp_updated
.
roles
,
r
)
def
test_create
(
client
):
cpp
=
Course
.
query
.
filter_by
(
codename
=
"testcourse1"
).
first
()
def
test_create
(
client
,
created_course
):
cpp
=
created_course
cpp_roles
=
len
(
cpp
.
roles
)
request_dict
=
{
...
...
@@ -25,12 +23,13 @@ def test_create(client):
'codename'
:
'new-role'
,
"description"
:
"new role desc"
}
response
=
rest_tools
.
make_request
(
client
,
f
"/courses/
{
cpp
.
codename
}
/roles"
,
json
=
request_dict
,
url
=
f
"/courses/
{
created_course
.
codename
}
/roles"
response
=
rest_tools
.
make_request
(
client
,
url
,
json
=
request_dict
,
method
=
'post'
)
assert_response
(
response
,
201
)
new_role
=
rest_tools
.
extract_data
(
response
)
cpp_updated
=
Course
.
query
.
filter_by
(
codename
=
"testcourse1"
).
first
()
cpp_updated
=
Course
.
query
.
filter_by
(
codename
=
created_course
.
codename
).
first
()
assert
len
(
cpp_updated
.
roles
)
==
cpp_roles
+
1
assert
new_role
[
'name'
]
==
"new role"
assert
new_role
[
'description'
]
==
"new role desc"
...
...
@@ -38,126 +37,105 @@ def test_create(client):
rest_tools
.
assert_role_in
(
cpp_updated
.
roles
,
new_role
)
def
test_read
(
client
):
cpp
=
Course
.
query
.
filter_by
(
codename
=
"testcourse1"
).
first
()
r
=
cpp
.
roles
[
0
]
response
=
rest_tools
.
make_request
(
client
,
f
"/courses/
{
cpp
.
codename
}
/roles/
{
r
.
name
}
"
,
)
def
test_read
(
client
,
created_course
,
created_role_student
):
url
=
f
"/courses/
{
created_course
.
codename
}
/roles/
{
created_role_student
.
codename
}
"
response
=
rest_tools
.
make_request
(
client
,
url
)
assert_response
(
response
,
200
)
role
=
rest_tools
.
extract_data
(
response
)
rest_tools
.
assert_role
(
r
,
role
)
rest_tools
.
assert_role
(
created_role_student
,
role
)
def
test_update
(
client
):
cpp
=
Course
.
query
.
filter_by
(
codename
=
"testcourse1"
).
first
()
r
=
cpp
.
roles
[
0
]
r_name
=
r
.
name
def
test_update
(
client
,
created_course
,
created_role_student
,
rest_service
):
request_dict
=
dict
(
name
=
"new role name"
,
description
=
"new role desc"
,
)
response
=
rest_tools
.
make_request
(
client
,
f
"/courses/
{
cpp
.
codename
}
/roles/
{
r
.
name
}
"
,
json
=
request_dict
,
method
=
'put'
)
url
=
f
"/courses/
{
created_course
.
codename
}
/roles/
{
created_role_student
.
name
}
"
response
=
rest_tools
.
make_request
(
client
,
url
,
json
=
request_dict
,
method
=
'put'
)
assert_response
(
response
,
204
)
r_updated
=
Role
.
query
.
filter
(
Role
.
course_id
==
cpp
.
id
).
filter
(
Role
.
name
==
"new role name"
).
first
()
r_updated
=
rest_service
.
find
.
role
(
created_course
,
created_role_student
.
id
)
assert
r_updated
assert
r_updated
.
description
==
"new role desc"
assert
not
Role
.
query
.
filter
(
Role
.
course_id
==
cpp
.
id
).
filter
(
Role
.
name
==
r_name
).
first
()
def
test_delete
(
client
):
cpp
=
Course
.
query
.
filter_by
(
codename
=
"testcourse1"
).
first
()
r
=
cpp
.
roles
[
0
]
r_name
=
r
.
name
cpp_roles
=
len
(
cpp
.
roles
)
response
=
rest_tools
.
make_request
(
client
,
f
"/courses/
{
cpp
.
codename
}
/roles/
{
r
.
name
}
"
,
method
=
'delete'
)
def
test_delete
(
client
,
created_course
,
created_role_student
,
rest_service
):
cpp_roles
=
len
(
created_course
.
roles
)
url
=
f
"/courses/
{
created_course
.
codename
}
/roles/
{
created_role_student
.
name
}
"
response
=
rest_tools
.
make_request
(
client
,
url
,
method
=
'delete'
)
assert_response
(
response
,
204
)
cpp_updated
=
Course
.
query
.
filter_by
(
codename
=
"testcourse1"
).
first
()
assert
len
(
cpp_updated
.
roles
)
==
cpp_roles
-
1
assert
not
Role
.
query
.
filter
(
Role
.
course_id
==
cpp
.
id
).
filter
(
Role
.
name
==
r_name
).
first
()
course_updated
=
rest_service
.
find
.
course
(
created_course
.
id
)
assert
len
(
course_updated
.
roles
)
==
cpp_roles
-
1
assert
not
rest_service
.
find
.
role
(
created_course
,
created_role_student
.
id
,
throws
=
False
)
def
test_users_list
(
client
):
cpp
=
Course
.
query
.
filter_by
(
codename
=
"testcourse1"
).
first
()
r
=
cpp
.
roles
[
0
]
response
=
rest_tools
.
make_request
(
client
,
f
"/courses/
{
cpp
.
codename
}
/roles/
{
r
.
id
}
/clients?type=user"
,
)
def
test_users_list
(
client
,
created_course
,
created_role_student
,
rest_service
):
url
=
f
"/courses/
{
created_course
.
codename
}
/roles/
{
created_role_student
.
id
}
/clients?type=user"
response
=
rest_tools
.
make_request
(
client
,
url
)
assert_response
(
response
,
200
)
users
=
rest_tools
.
extract_data
(
response
)
assert
len
(
users
)
==
len
(
r
.
clients
)
assert
len
(
users
)
==
len
(
created_role_student
.
clients
)
for
user
in
users
:
rest_tools
.
assert_user_in
(
r
.
clients
,
user
)
rest_tools
.
assert_user_in
(
created_role_student
.
clients
,
user
)
def
test_users_update_add
(
client
):
c
=
Course
.
query
.
filter_by
(
codename
=
"testcourse2"
).
first
()
roles
=
[
role
for
role
in
c
.
roles
if
role
.
name
==
"student"
]
r
=
roles
[
0
]
r_users
=
len
(
r
.
clients
)
user
=
User
.
query
.
filter_by
(
username
=
"student1"
).
first
()
assert
user
not
in
r
.
clients
def
test_users_update_add
(
client
,
created_course2
,
created_role_student
,
rest_service
,
created_student
):
roles
=
[
role
for
role
in
c
reated_course2
.
roles
if
role
.
name
==
"student"
]
r
ole
=
roles
[
0
]
r_users
=
len
(
r
ole
.
clients
)
user
=
created_student
assert
user
not
in
r
ole
.
clients
request_dict
=
dict
(
add
=
[
user
.
id
]
)
response
=
rest_tools
.
make_request
(
client
,
f
"/courses/
{
c
.
codename
}
/roles/
{
r
.
name
}
/clients"
,
json
=
request_dict
,
method
=
'put'
)
request_dict
=
dict
(
add
=
[
user
.
id
])
url
=
f
"/courses/
{
created_course2
.
codename
}
/roles/
{
role
.
name
}
/clients"
response
=
rest_tools
.
make_request
(
client
,
url
,
json
=
request_dict
,
method
=
'put'
)
assert_response
(
response
,
204
)
r_updated
=
Role
.
query
.
filter
(
Role
.
course_id
==
c
.
id
).
filter
(
Role
.
id
==
r
.
id
).
first
()
r_updated
=
rest_service
.
find
.
role
(
created_course2
,
role
.
id
)
assert
len
(
r_updated
.
clients
)
==
r_users
+
1
assert
user
in
r_updated
.
clients
def
test_users_update_add_duplicate
(
client
):
c
=
Course
.
query
.
filter_by
(
codename
=
"testcourse2"
).
first
()
roles
=
[
role
for
role
in
c
.
roles
if
role
.
name
==
"student"
]
r
=
roles
[
0
]
r_users
=
len
(
r
.
clients
)
user
=
r
.
clients
[
0
]
assert
user
in
r
.
clients
def
test_users_update_add_duplicate
(
client
,
created_course2
,
created_role_student
,
rest_service
,
created_student
):
roles
=
[
role
for
role
in
c
reated_course2
.
roles
if
role
.
name
==
"student"
]
r
ole
=
roles
[
0
]
r_users
=
len
(
r
ole
.
clients
)
user
=
r
ole
.
clients
[
0
]
assert
user
in
r
ole
.
clients
request_dict
=
dict
(
add
=
[
user
.
id
])
response
=
rest_tools
.
make_request
(
client
,
f
"/
course
s/
{
c
.
codename
}
/roles/
{
r
.
name
}
/clients"
,
json
=
request_dict
,
method
=
'put'
)
url
=
f
"/courses/
{
created_
course
2
.
codename
}
/roles/
{
r
ole
.
name
}
/clients"
response
=
rest_tools
.
make_request
(
client
,
url
,
json
=
request_dict
,
method
=
'put'
)
assert_response
(
response
,
204
)
r_updated
=
Role
.
query
.
filter
(
Role
.
course_id
==
c
.
id
).
filter
(
Role
.
id
==
r
.
id
).
first
()
r_updated
=
rest_service
.
find
.
role
(
created_course2
,
role
.
id
)
assert
len
(
r_updated
.
clients
)
==
r_users
assert
user
in
r_updated
.
clients
def
test_users_update_remove
(
client
):
c
=
Course
.
query
.
filter_by
(
codename
=
"testcourse2"
).
first
()
roles
=
[
role
for
role
in
c
.
roles
if
role
.
name
==
"student"
]
r
=
roles
[
0
]
r_users
=
len
(
r
.
clients
)
user
=
r
.
clients
[
0
]
assert
user
in
r
.
clients
def
test_users_update_remove
(
client
,
rest_service
,
created_course2
,
created_student
):
roles
=
[
role
for
role
in
created_course2
.
roles
if
role
.
name
==
"student"
]
role
=
roles
[
0
]
r_users
=
len
(
role
.
clients
)
user
=
role
.
clients
[
0
]
assert
user
in
role
.
clients
request_dict
=
dict
(
remove
=
[
user
.
id
])
response
=
rest_tools
.
make_request
(
client
,
f
"/courses/
{
c
.
codename
}
/roles/
{
r
.
name
}
/clients"
,
url
=
f
"/courses/
{
created_course2
.
codename
}
/roles/
{
role
.
name
}
/clients"
response
=
rest_tools
.
make_request
(
client
,
url
,
json
=
request_dict
,
method
=
'put'
)
assert_response
(
response
,
204
)
r_updated
=
Role
.
query
.
filter
(
Role
.
course_id
==
c
.
id
).
filter
(
Role
.
id
==
r
.
id
).
first
()
r_updated
=
rest_service
.
find
.
role
(
created_course2
,
role
.
id
)
assert
len
(
r_updated
.
clients
)
==
r_users
-
1
assert
user
not
in
r_updated
.
clients
...
...
tests/rest/test_worker.py
View file @
416074ac
...
...
@@ -30,31 +30,37 @@ def test_create(client):
rest_tools
.
assert_worker_in
(
db_workers
,
resp_new_worker
)
def
test_read
(
client
):
w
=
Worker
.
query
.
filter_by
(
name
=
"executor"
).
first
()
response
=
rest_tools
.
make_request
(
client
,
f
"/workers/
{
w
.
id
}
"
)
def
test_read_by_id
(
client
,
created_worker
):
response
=
rest_tools
.
make_request
(
client
,
f
"/workers/
{
created_worker
.
id
}
"
)
assert_response
(
response
)
worker
=
rest_tools
.
extract_data
(
response
)
rest_tools
.
assert_worker
(
w
,
worker
)
rest_tools
.
assert_worker
(
created_worker
,
worker
)
def
test_update
(
client
):
w
=
Worker
.
query
.
filter_by
(
name
=
"executor"
).
first
()
def
test_read_by_codename
(
client
,
created_worker
):
response
=
rest_tools
.
make_request
(
client
,
f
"/workers/
{
created_worker
.
codename
}
"
)
assert_response
(
response
)
worker
=
rest_tools
.
extract_data
(
response
)
rest_tools
.
assert_worker
(
created_worker
,
worker
)
def
test_update
(
client
,
created_worker
):
request_dict
=
dict
(
url
=
"new url"
,
portal_secret
=
"such safe"
)
response
=
rest_tools
.
make_request
(
client
,
f
'/workers/
{
w
.
id
}
'
,
json
=
request_dict
,
method
=
'put'
)
url
=
f
'/workers/
{
created_worker
.
id
}
'
response
=
rest_tools
.
make_request
(
client
,
url
,
json
=
request_dict
,
method
=
'put'
)
assert_response
(
response
,
204
)
worker_after_update
:
Worker
=
Worker
.
query
.
filter_by
(
name
=
"executor"
).
first
()
worker_after_update
:
Worker
=
Worker
.
query
.
filter_by
(
name
=
created_worker
.
codename
).
first
()
assert
worker_after_update
.
url
==
"new url"
assert
worker_after_update
.
portal_secret
==
"such safe"
def
test_delete
(
client
):
worker
=
Worker
.
query
.
filter_by
(
name
=
"executor"
).
first
()
response
=
rest_tools
.
make_request
(
client
,
f
'/workers/
{
worker
.
id
}
'
,
method
=
'delete'
)
def
test_delete
(
client
,
created_worker
):
response
=
rest_tools
.
make_request
(
client
,
f
'/workers/
{
created_worker
.
id
}
'
,
method
=
'delete'
)
assert_response
(
response
,
204
)
assert
not
Worker
.
query
.
filter_by
(
name
=
"executor"
).
first
()
assert
not
Worker
.
query
.
filter_by
(
name
=
created_worker
.
codename
).
first
()
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment