mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
using the following command: ``` autopep8 -i -r --exclude $(sed -e 's|^|./|' -e 's|/$||' .ci/flake8_blacklist.txt | paste -sd,) --select E201,E202 . ```
105 lines
4.6 KiB
Python
105 lines
4.6 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)
|