@Test public void default_values() { Page result = underTest.build(); assertThat(result.getComponentQualifiers()).isEmpty(); assertThat(result.getScope()).isEqualTo(GLOBAL); assertThat(result.isAdmin()).isFalse(); }
@Test public void full_test() { Page result = underTest .setComponentQualifiers(PROJECT, MODULE) .setScope(COMPONENT) .setAdmin(true) .build(); assertThat(result.getKey()).isEqualTo("governance/project_dump"); assertThat(result.getPluginKey()).isEqualTo("governance"); assertThat(result.getName()).isEqualTo("Project Dump"); assertThat(result.getComponentQualifiers()).containsOnly(PROJECT, MODULE); assertThat(result.getScope()).isEqualTo(COMPONENT); assertThat(result.isAdmin()).isTrue(); }
@Test public void fail_if_page_with_unknown_plugin() { PageDefinition governance = context -> context.addPage(Page.builder("governance/my_key").setName("N1").build()); PageDefinition plugin42 = context -> context.addPage(Page.builder("plugin_42/my_key").setName("N2").build()); pluginRepository = mock(PluginRepository.class); when(pluginRepository.hasPlugin("governance")).thenReturn(true); underTest = new PageRepository(pluginRepository, coreExtensionRepository, new PageDefinition[]{governance, plugin42}); expectedException.expect(IllegalStateException.class); expectedException.expectMessage("Page 'N2' references plugin 'plugin_42' that does not exist"); underTest.start(); } }
@Test public void filter_out_admin_pages_when_user_is_not_admin() { initWithPages( Page.builder("my-plugin/org-page").setName("Organization page").setScope(ORGANIZATION).build(), Page.builder("my-plugin/org-admin-page").setName("Organization admin page").setScope(ORGANIZATION).setAdmin(true).build()); OrganizationDto organization = db.organizations().insert(dto -> dto.setGuarded(true)); userSession.logIn() .addPermission(PROVISION_PROJECTS, organization); TestResponse response = executeRequest(organization); assertThat(response.getInput()) .contains("my-plugin/org-page") .doesNotContain("my-plugin/org-admin-page"); }
@Test public void filter_pages_without_qualifier() { PageDefinition plugin = context -> context .addPage(Page.builder("my_plugin/K1").setName("N1").build()) .addPage(Page.builder("my_plugin/K2").setName("N2").build()) .addPage(Page.builder("my_plugin/K3").setName("N3").build()); underTest = new PageRepository(pluginRepository, coreExtensionRepository, new PageDefinition[]{plugin}); underTest.start(); List<Page> result = underTest.getGlobalPages(false); assertThat(result) .extracting(Page::getKey) .containsExactly("my_plugin/K1", "my_plugin/K2", "my_plugin/K3"); }
@Test public void ordered_by_name() { underTest .addPage(Page.builder("fake/K1").setName("N2").build()) .addPage(Page.builder("fake/K2").setName("N3").build()) .addPage(Page.builder("fake/K3").setName("N1").build()); Collection<Page> result = underTest.getPages(); assertThat(result).extracting(Page::getKey, Page::getName) .containsOnly( tuple("fake/K3", "N1"), tuple("fake/K1", "N2"), tuple("fake/K2", "N3")); }
@Test public void fail_if_qualifiers_without_scope() { expectedException.expect(IllegalArgumentException.class); underTest.setComponentQualifiers(PROJECT).build(); }
@Test public void fail_if_a_page_has_an_empty_key() { expectedException.expect(IllegalArgumentException.class); Page.builder("").setName("Say my name").build(); }
@Test public void fail_if_null_qualifiers() { expectedException.expect(NullPointerException.class); underTest.setComponentQualifiers((Qualifier[])null).build(); }
@Test public void fail_if_key_contains_more_than_one_slash() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Page key [governance/project/dump] is not valid. It must contain a single slash, for example my_plugin/my_page."); Page.builder("governance/project/dump").setName("Project Dump").build(); } }
@Test public void fail_if_key_does_not_contain_a_slash() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Page key [project_dump] is not valid. It must contain a single slash, for example my_plugin/my_page."); Page.builder("project_dump").setName("Project Dump").build(); }
@Test public void json_example() { initWithPages( Page.builder("my-plugin/org-page").setName("Organization page").setScope(ORGANIZATION).build(), Page.builder("my-plugin/org-admin-page").setName("Organization admin page").setScope(ORGANIZATION).setAdmin(true).build()); OrganizationDto organization = db.organizations().insert(dto -> dto.setGuarded(true)); userSession.logIn() .addPermission(ADMINISTER, organization) .addPermission(PROVISION_PROJECTS, organization); TestResponse response = executeRequest(organization); assertJson(response.getInput()).isSimilarTo(ws.getDef().responseExampleAsString()); }
private Page[] createPages() { Page page = Page.builder("my_plugin/page").setName("My Plugin Page").build(); Page anotherPage = Page.builder("another_plugin/page").setName("My Another Page").build(); Page adminPage = Page.builder("my_plugin/admin_page").setName("Admin Page").setAdmin(true).build(); return new Page[] {page, anotherPage, adminPage}; } }
@Test public void fail_if_a_page_has_an_empty_name() { expectedException.expect(IllegalArgumentException.class); Page.builder("governance/project_dump").setName("").build(); }
@Test public void all_qualifiers_when_component_page() { Page result = underTest.setScope(COMPONENT).build(); assertThat(result.getComponentQualifiers()).containsOnly(Qualifier.values()); }
@Test public void get_organization_admin_pages() { PageDefinition plugin = context -> context .addPage(Page.builder("my_plugin/O1").setName("O1").setScope(ORGANIZATION).build()) .addPage(Page.builder("my_plugin/O2").setName("O2").setScope(ORGANIZATION).setAdmin(true).build()); underTest = new PageRepository(pluginRepository, coreExtensionRepository, new PageDefinition[]{plugin}); underTest.start(); List<Page> result = underTest.getOrganizationPages(true); assertThat(result) .extracting(Page::getKey) .containsExactly("my_plugin/O2"); }
@Test public void fail_if_a_page_has_a_null_name() { expectedException.expect(IllegalArgumentException.class); Page.builder("governance/project_dump").build(); }
@Test public void test_page_definition() { PageDefinition underTest = context -> context.addPage(Page.builder("my_plugin/my_page").setName("My Page").build()); Context context = new Context(); underTest.define(context); assertThat(context.getPages()).extracting(Page::getKey).contains("my_plugin/my_page"); }
@Test public void fail_if_a_page_has_a_null_key() { expectedException.expect(NullPointerException.class); Page.builder(null).setName("Say my name").build(); }