Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
ecommerce
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
ecommerce
Commits
c2e31350
Commit
c2e31350
authored
Jan 26, 2017
by
Clinton Blackburn
Committed by
Clinton Blackburn
Jan 27, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updated Refund create endpoint to allow any staff user to create a refund
ECOM-6539
parent
c74da2d7
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
15 additions
and
15 deletions
+15
-15
ecommerce/extensions/api/permissions.py
+3
-3
ecommerce/extensions/api/tests/test_permissions.py
+6
-6
ecommerce/extensions/api/v2/tests/views/test_refunds.py
+6
-6
No files found.
ecommerce/extensions/api/permissions.py
View file @
c2e31350
from
rest_framework
import
permissions
from
rest_framework
import
permissions
class
CanActForUser
(
permissions
.
BasePermission
):
class
CanActForUser
(
permissions
.
IsAdminUser
):
"""
"""
Allows access only if the user has permission to perform operations for the user represented by the username field
Allows access only if the user has permission to perform operations for the user represented by the username field
in request.data.
in request.data.
"""
"""
def
has_permission
(
self
,
request
,
view
):
def
has_permission
(
self
,
request
,
view
):
user
=
request
.
user
username
=
request
.
data
.
get
(
'username'
)
username
=
request
.
data
.
get
(
'username'
)
if
not
username
:
if
not
username
:
return
False
return
False
user
=
request
.
user
return
super
(
CanActForUser
,
self
)
.
has_permission
(
request
,
view
)
or
(
user
and
user
.
username
==
username
)
return
user
and
(
user
.
is_superuser
or
user
.
username
==
username
)
class
IsOffersOrIsAuthenticatedAndStaff
(
permissions
.
BasePermission
):
class
IsOffersOrIsAuthenticatedAndStaff
(
permissions
.
BasePermission
):
...
...
ecommerce/extensions/api/tests/test_permissions.py
View file @
c2e31350
...
@@ -23,19 +23,19 @@ class CanActForUserTests(PermissionsTestMixin, TestCase):
...
@@ -23,19 +23,19 @@ class CanActForUserTests(PermissionsTestMixin, TestCase):
request
=
self
.
get_request
()
request
=
self
.
get_request
()
self
.
assertFalse
(
self
.
permissions_class
.
has_permission
(
request
,
None
))
self
.
assertFalse
(
self
.
permissions_class
.
has_permission
(
request
,
None
))
def
test_has_permission_s
uperuser
(
self
):
def
test_has_permission_s
taff
(
self
):
""" Return True if request.user is a s
uper
user. """
""" Return True if request.user is a s
taff
user. """
user
=
self
.
create_user
(
is_s
uperuser
=
True
)
user
=
self
.
create_user
(
is_s
taff
=
True
)
# Data is required, even if you're a s
uper
user.
# Data is required, even if you're a s
taff
user.
request
=
self
.
get_request
(
user
=
user
)
request
=
self
.
get_request
(
user
=
user
)
self
.
assertFalse
(
self
.
permissions_class
.
has_permission
(
request
,
None
))
self
.
assertFalse
(
self
.
permissions_class
.
has_permission
(
request
,
None
))
# S
uperusers
can create their own refunds
# S
taff
can create their own refunds
request
=
self
.
get_request
(
user
=
user
,
data
=
{
'username'
:
user
.
username
})
request
=
self
.
get_request
(
user
=
user
,
data
=
{
'username'
:
user
.
username
})
self
.
assertTrue
(
self
.
permissions_class
.
has_permission
(
request
,
None
))
self
.
assertTrue
(
self
.
permissions_class
.
has_permission
(
request
,
None
))
# S
uperusers
can create refunds for other users
# S
taff
can create refunds for other users
request
=
self
.
get_request
(
user
=
user
,
data
=
{
'username'
:
'other_guy'
})
request
=
self
.
get_request
(
user
=
user
,
data
=
{
'username'
:
'other_guy'
})
self
.
assertTrue
(
self
.
permissions_class
.
has_permission
(
request
,
None
))
self
.
assertTrue
(
self
.
permissions_class
.
has_permission
(
request
,
None
))
...
...
ecommerce/extensions/api/v2/tests/views/test_refunds.py
View file @
c2e31350
...
@@ -70,8 +70,8 @@ class RefundCreateViewTests(RefundTestMixin, AccessTokenMixin, JwtMixin, TestCas
...
@@ -70,8 +70,8 @@ class RefundCreateViewTests(RefundTestMixin, AccessTokenMixin, JwtMixin, TestCas
"""
"""
If no user matching the username is found, return HTTP 400.
If no user matching the username is found, return HTTP 400.
"""
"""
s
uperuser
=
self
.
create_user
(
is_superuser
=
True
)
s
taff_user
=
self
.
create_user
(
is_staff
=
True
)
self
.
client
.
login
(
username
=
s
uper
user
.
username
,
password
=
self
.
password
)
self
.
client
.
login
(
username
=
s
taff_
user
.
username
,
password
=
self
.
password
)
username
=
'fakey-userson'
username
=
'fakey-userson'
data
=
self
.
_get_data
(
username
,
self
.
course_id
)
data
=
self
.
_get_data
(
username
,
self
.
course_id
)
...
@@ -117,7 +117,7 @@ class RefundCreateViewTests(RefundTestMixin, AccessTokenMixin, JwtMixin, TestCas
...
@@ -117,7 +117,7 @@ class RefundCreateViewTests(RefundTestMixin, AccessTokenMixin, JwtMixin, TestCas
self
.
assert_ok_response
(
response
)
self
.
assert_ok_response
(
response
)
def
test_authorization
(
self
):
def
test_authorization
(
self
):
""" Client must be authenticated as the user matching the username field or a s
uper
user. """
""" Client must be authenticated as the user matching the username field or a s
taff
user. """
# A normal user CANNOT create refunds for other users.
# A normal user CANNOT create refunds for other users.
self
.
client
.
login
(
username
=
self
.
user
.
username
,
password
=
self
.
password
)
self
.
client
.
login
(
username
=
self
.
user
.
username
,
password
=
self
.
password
)
...
@@ -125,9 +125,9 @@ class RefundCreateViewTests(RefundTestMixin, AccessTokenMixin, JwtMixin, TestCas
...
@@ -125,9 +125,9 @@ class RefundCreateViewTests(RefundTestMixin, AccessTokenMixin, JwtMixin, TestCas
response
=
self
.
client
.
post
(
self
.
path
,
data
,
JSON_CONTENT_TYPE
)
response
=
self
.
client
.
post
(
self
.
path
,
data
,
JSON_CONTENT_TYPE
)
self
.
assertEqual
(
response
.
status_code
,
status
.
HTTP_403_FORBIDDEN
)
self
.
assertEqual
(
response
.
status_code
,
status
.
HTTP_403_FORBIDDEN
)
# A s
uper
user can create refunds for everyone.
# A s
taff
user can create refunds for everyone.
s
uperuser
=
self
.
create_user
(
is_superuser
=
True
)
s
taff_user
=
self
.
create_user
(
is_staff
=
True
)
self
.
client
.
login
(
username
=
s
uper
user
.
username
,
password
=
self
.
password
)
self
.
client
.
login
(
username
=
s
taff_
user
.
username
,
password
=
self
.
password
)
data
=
self
.
_get_data
(
self
.
user
.
username
,
self
.
course_id
)
data
=
self
.
_get_data
(
self
.
user
.
username
,
self
.
course_id
)
response
=
self
.
client
.
post
(
self
.
path
,
data
,
JSON_CONTENT_TYPE
)
response
=
self
.
client
.
post
(
self
.
path
,
data
,
JSON_CONTENT_TYPE
)
self
.
assert_ok_response
(
response
)
self
.
assert_ok_response
(
response
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a 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