def test_list_pagination(tmpdir, setup, browser): # type: (LocalPath, SetupTest, Chrome) -> None """Test pagination. This forces the pagination to specific values, rather than using the page controls, since we don't create more than 100 permissions for testing. """ permissions = create_test_data(setup) settings = FrontendSettings() settings.update_from_config(src_path("config", "dev.yaml")) expected_permissions = [ (p.name, p.description, format_date(settings, p.created_on)) for p in permissions ] with frontend_server(tmpdir, "*****@*****.**") as frontend_url: browser.get(url(frontend_url, "/permissions?limit=1&offset=1")) page = PermissionsPage(browser) seen_permissions = [(r.name, r.description, r.created_on) for r in page.permission_rows] assert seen_permissions == sorted(expected_permissions)[1:2] assert page.limit_label == "Limit: 1" # Retrieve the last permission but with a larger limit to test that the limit isn't capped # to the number of returned items. browser.get(url(frontend_url, "/permissions?limit=10&offset=2")) page = PermissionsPage(browser) seen_permissions = [(r.name, r.description, r.created_on) for r in page.permission_rows] assert seen_permissions == sorted(expected_permissions)[2:] assert page.limit_label == "Limit: 10"
def test_list(tmpdir, setup, browser): # type: (LocalPath, SetupTest, Chrome) -> None permissions = create_test_data(setup) expected_permissions = [(p.name, p.description, print_date(p.created_on)) for p in permissions] with frontend_server(tmpdir, "*****@*****.**") as frontend_url: browser.get(url(frontend_url, "/permissions")) # Check the basic permission list. page = PermissionsPage(browser) seen_permissions = [(r.name, r.description, r.created_on) for r in page.permission_rows] assert seen_permissions == sorted(expected_permissions) assert page.heading == "Permissions" assert page.subheading == "{} permission(s)".format( len(expected_permissions)) assert page.limit_label == "Limit: 100" # Switch to only audited permissions. page.click_show_audited_button() seen_permissions = [(r.name, r.description, r.created_on) for r in page.permission_rows] audited = [ p for p in expected_permissions if p[0] == "audited-permission" ] assert seen_permissions == sorted(audited) assert page.heading == "Audited Permissions" assert page.subheading == "{} permission(s)".format(len(audited)) # Switch back to all permissions and sort by date. page.click_show_all_button() page.click_sort_by_date() seen_permissions = [(r.name, r.description, r.created_on) for r in page.permission_rows] expected_permissions_sorted_by_time = [ (p.name, p.description, print_date(p.created_on)) for p in sorted( permissions, key=lambda p: p.created_on, reverse=True) ] assert seen_permissions == expected_permissions_sorted_by_time # Reverse the sort order. page.click_sort_by_date() seen_permissions = [(r.name, r.description, r.created_on) for r in page.permission_rows] assert seen_permissions == list( reversed(expected_permissions_sorted_by_time))
def test_create_permission(tmpdir, setup, browser): # type: (LocalPath, SetupTest, Chrome) -> None with setup.transaction(): setup.add_user_to_group("*****@*****.**", "some-group") setup.grant_permission_to_group(PERMISSION_CREATE, "foo.*", "some-group") setup.grant_permission_to_group(PERMISSION_CREATE, "bar.baz", "some-group") with frontend_server(tmpdir, "*****@*****.**") as frontend_url: browser.get(url(frontend_url, "/permissions")) page = PermissionsPage(browser) page.click_create_permission_button() create_page = PermissionCreatePage(browser) assert create_page.allowed_patterns == ["bar.baz", "foo.*"] create_page.set_name("foo.bar") create_page.set_description("testing") create_page.form.submit() view_page = PermissionViewPage(browser) assert view_page.subheading == "foo.bar" assert view_page.description == "testing"
def test_list_create_button(tmpdir, setup, browser): # type: (LocalPath, SetupTest, Chrome) -> None with frontend_server(tmpdir, "*****@*****.**") as frontend_url: browser.get(url(frontend_url, "/permissions")) page = PermissionsPage(browser) assert not page.has_create_permission_button with setup.transaction(): setup.grant_permission_to_group(PERMISSION_CREATE, "*", "admins") setup.add_user_to_group("*****@*****.**", "admins") browser.get(url(frontend_url, "/permissions?refresh=yes")) assert page.has_create_permission_button
def test_list(tmpdir, setup, browser): # type: (LocalPath, SetupTest, Chrome) -> None permissions = create_test_data(setup) settings = FrontendSettings() settings.update_from_config(src_path("config", "dev.yaml")) expected_permissions = [ (p.name, p.description, format_date(settings, p.created_on)) for p in permissions ] with frontend_server(tmpdir, "*****@*****.**") as frontend_url: browser.get(url(frontend_url, "/permissions")) # Check the basic permission list. page = PermissionsPage(browser) seen_permissions = [(r.name, r.description, r.created_on) for r in page.permission_rows] assert seen_permissions == sorted(expected_permissions) assert page.heading == "Permissions" assert page.subheading == "{} permission(s)".format(len(expected_permissions)) assert page.limit_label == "Limit: 100" # Switch to only audited permissions. page.click_show_audited_button() seen_permissions = [(r.name, r.description, r.created_on) for r in page.permission_rows] audited = [p for p in expected_permissions if p[0] == "audited-permission"] assert seen_permissions == sorted(audited) assert page.heading == "Audited Permissions" assert page.subheading == "{} permission(s)".format(len(audited)) # Switch back to all permissions and sort by date. page.click_show_all_button() page.click_sort_by_date() seen_permissions = [(r.name, r.description, r.created_on) for r in page.permission_rows] expected_permissions_sorted_by_time = [ (p.name, p.description, format_date(settings, p.created_on)) for p in sorted(permissions, key=lambda p: p.created_on, reverse=True) ] assert seen_permissions == expected_permissions_sorted_by_time # Reverse the sort order. page.click_sort_by_date() seen_permissions = [(r.name, r.description, r.created_on) for r in page.permission_rows] assert seen_permissions == list(reversed(expected_permissions_sorted_by_time))