Page Menu
Home
Search
Configure Global Search
Log In
Files
F13114664
test_user_admin.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Size
2 KB
Subscribers
None
test_user_admin.py
View Options
# -*- encoding: utf-8 -*-
"""Unit tests for the user admin interface."""
import
json
import
logging
import
responses
from
bson
import
ObjectId
import
flask_login
import
pillarsdk
from
pillar.tests
import
AbstractPillarTest
,
TEST_EMAIL_ADDRESS
from
werkzeug
import
exceptions
as
wz_exceptions
log
=
logging
.
getLogger
(
__name__
)
class
UserAdminTest
(
AbstractPillarTest
):
def
setUp
(
self
,
**
kwargs
):
AbstractPillarTest
.
setUp
(
self
,
**
kwargs
)
self
.
create_standard_groups
()
from
pillar.api.service
import
role_to_group_id
self
.
subscriber_gid
=
role_to_group_id
[
'subscriber'
]
self
.
demo_gid
=
role_to_group_id
[
'demo'
]
def
test_grant_subscriber_role
(
self
):
"""There was a bug that group membership was lost when a user was edited."""
import
pillar.web.users.routes
import
pillar.auth
user_id
=
self
.
create_user
(
roles
=
(
'mønkeybütler'
,
))
self
.
create_valid_auth_token
(
user_id
,
'token'
)
# Try to access the home project, creating it.
self
.
get
(
'/api/bcloud/home-project'
,
auth_token
=
'token'
)
def
get_dbuser
():
with
self
.
app
.
test_request_context
():
db
=
self
.
app
.
db
()
return
db
[
'users'
]
.
find_one
({
'_id'
:
user_id
})
db_user
=
get_dbuser
()
groups_pre_op
=
db_user
[
'groups'
]
self
.
assertEqual
(
1
,
len
(
groups_pre_op
))
home_project_gid
=
groups_pre_op
[
0
]
# Edit the user, granting subscriber and demo roles.
admin_id
=
24
*
'a'
self
.
create_user
(
admin_id
,
roles
=
[
'admin'
])
self
.
create_valid_auth_token
(
admin_id
,
'admin-token'
)
def
edit_user
(
roles
):
from
pillar.web
import
system_util
from
pillar.web.users.forms
import
UserEditForm
with
self
.
app
.
test_request_context
():
api
=
system_util
.
pillar_api
(
token
=
'admin-token'
)
user
=
pillarsdk
.
User
.
find
(
user_id
,
api
=
api
)
form
=
UserEditForm
()
form
.
roles
.
data
=
roles
form
.
email
.
data
=
user
.
email
pillar
.
web
.
users
.
routes
.
_users_edit
(
form
,
user
,
api
)
edit_user
([
'subscriber'
,
'demo'
])
# Re-check the user group membership.
dbuser
=
get_dbuser
()
self
.
assertEqual
({
home_project_gid
,
self
.
subscriber_gid
,
self
.
demo_gid
},
set
(
dbuser
[
'groups'
]))
self
.
assertEqual
({
'subscriber'
,
'demo'
,
'mønkeybütler'
},
set
(
dbuser
[
'roles'
]))
# Edit user again, revoking demo role.
edit_user
([
'subscriber'
])
dbuser
=
get_dbuser
()
self
.
assertEqual
({
home_project_gid
,
self
.
subscriber_gid
},
set
(
dbuser
[
'groups'
]))
self
.
assertEqual
({
'subscriber'
,
'mønkeybütler'
},
set
(
dbuser
[
'roles'
]))
File Metadata
Details
Attached
Mime Type
text/x-python
Expires
Sun, May 29, 3:16 PM (1 d, 23 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
bd/ad/f163d9cb60ab17b2687f8e857a24
Attached To
rPS Pillar
Event Timeline
Log In to Comment