mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
105 lines
4.7 KiB
Python
105 lines
4.7 KiB
Python
from requests import delete
|
|
|
|
from base import api
|
|
from galaxy.exceptions import error_codes
|
|
|
|
|
|
class BasePageApiTestCase( api.ApiTestCase ):
|
|
|
|
def _create_valid_page_with_slug( self, slug ):
|
|
page_request = self._test_page_payload( slug=slug )
|
|
page_response = self._post( "pages", page_request )
|
|
self._assert_status_code_is( page_response, 200 )
|
|
return page_response.json()
|
|
|
|
def _create_valid_page_as( self, other_email, slug ):
|
|
run_as_user = self._setup_user( other_email )
|
|
page_request = self._test_page_payload( slug=slug )
|
|
page_request[ "run_as" ] = run_as_user[ "id" ]
|
|
page_response = self._post( "pages", page_request, admin=True )
|
|
self._assert_status_code_is( page_response, 200 )
|
|
return page_response.json()
|
|
|
|
def _test_page_payload( self, **kwds ):
|
|
request = dict(
|
|
slug="mypage",
|
|
title="MY PAGE",
|
|
content="<p>Page!</p>",
|
|
)
|
|
request.update( **kwds )
|
|
return request
|
|
|
|
|
|
class PageApiTestCase( BasePageApiTestCase ):
|
|
|
|
def test_create( self ):
|
|
response_json = self._create_valid_page_with_slug( "mypage" )
|
|
self._assert_has_keys( response_json, "slug", "title", "id" )
|
|
|
|
def test_index( self ):
|
|
create_response_json = self._create_valid_page_with_slug( "indexpage" )
|
|
assert self._users_index_has_page_with_id( create_response_json[ "id" ] )
|
|
|
|
def test_index_doesnt_show_unavailable_pages( self ):
|
|
create_response_json = self._create_valid_page_as( "others_page_index@bx.psu.edu", "otherspageindex" )
|
|
assert not self._users_index_has_page_with_id( create_response_json[ "id" ] )
|
|
|
|
def test_cannot_create_pages_with_same_slug( self ):
|
|
page_request = self._test_page_payload( slug="mypage1" )
|
|
page_response_1 = self._post( "pages", page_request )
|
|
self._assert_status_code_is( page_response_1, 200 )
|
|
page_response_2 = self._post( "pages", page_request )
|
|
self._assert_status_code_is( page_response_2, 400 )
|
|
self._assert_error_code_is( page_response_2, error_codes.USER_SLUG_DUPLICATE )
|
|
|
|
def test_page_requires_name( self ):
|
|
page_request = self._test_page_payload()
|
|
del page_request[ 'title' ]
|
|
page_response = self._post( "pages", page_request )
|
|
self._assert_status_code_is( page_response, 400 )
|
|
self._assert_error_code_is( page_response, error_codes.USER_OBJECT_ATTRIBUTE_MISSING )
|
|
|
|
def test_page_requires_slug( self ):
|
|
page_request = self._test_page_payload()
|
|
del page_request[ 'slug' ]
|
|
page_response = self._post( "pages", page_request )
|
|
self._assert_status_code_is( page_response, 400 )
|
|
|
|
def test_delete( self ):
|
|
response_json = self._create_valid_page_with_slug( "testdelete" )
|
|
delete_response = delete( self._api_url( "pages/%s" % response_json[ 'id' ], use_key=True ) )
|
|
self._assert_status_code_is( delete_response, 200 )
|
|
|
|
def test_404_on_delete_unknown_page( self ):
|
|
delete_response = delete( self._api_url( "pages/%s" % self._random_key(), use_key=True ) )
|
|
self._assert_status_code_is( delete_response, 404 )
|
|
self._assert_error_code_is( delete_response, error_codes.USER_OBJECT_NOT_FOUND )
|
|
|
|
def test_403_on_delete_unowned_page( self ):
|
|
page_response = self._create_valid_page_as( "others_page@bx.psu.edu", "otherspage" )
|
|
delete_response = delete( self._api_url( "pages/%s" % page_response[ "id" ], use_key=True ) )
|
|
self._assert_status_code_is( delete_response, 403 )
|
|
self._assert_error_code_is( delete_response, error_codes.USER_DOES_NOT_OWN_ITEM )
|
|
|
|
def test_show( self ):
|
|
response_json = self._create_valid_page_with_slug( "pagetoshow" )
|
|
show_response = self._get( "pages/%s" % response_json['id'] )
|
|
self._assert_status_code_is( show_response, 200 )
|
|
show_json = show_response.json()
|
|
self._assert_has_keys( show_json, "slug", "title", "id" )
|
|
self.assertEquals( show_json["slug"], "pagetoshow" )
|
|
self.assertEquals( show_json["title"], "MY PAGE" )
|
|
self.assertEquals( show_json["content"], "<p>Page!</p>" )
|
|
|
|
def test_403_on_unowner_show( self ):
|
|
response_json = self._create_valid_page_as( "others_page_show@bx.psu.edu", "otherspageshow" )
|
|
show_response = self._get( "pages/%s" % response_json['id'] )
|
|
self._assert_status_code_is( show_response, 403 )
|
|
self._assert_error_code_is( show_response, error_codes.USER_DOES_NOT_OWN_ITEM )
|
|
|
|
def _users_index_has_page_with_id( self, id ):
|
|
index_response = self._get( "pages" )
|
|
self._assert_status_code_is( index_response, 200 )
|
|
pages = index_response.json()
|
|
return id in ( _["id"] for _ in pages )
|