startServices(host); waitForServiceAvailability(AuthInitialBootService.SELF_LINK); waitForInitialBootServiceToBeSelfStopped(AuthInitialBootService.SELF_LINK); waitForDefaultRoles(); waitForDefaultUsersAndGroups(); TestContext ctx = new TestContext(1, Duration.ofSeconds(DEFAULT_WAIT_SECONDS_FOR_AUTH_SERVICES)); ctx::completeIteration, ctx::failIteration); ctx.await(); waitForServiceAvailability(SessionService.SELF_LINK); waitForServiceAvailability(ProjectFactoryService.SELF_LINK); waitForServiceAvailability(ClusterService.SELF_LINK); waitForServiceAvailability(ContainerHostService.SELF_LINK); waitForServiceAvailability(ComputeService.FACTORY_LINK); waitForServiceAvailability(ResourcePoolService.FACTORY_LINK); waitForServiceAvailability(GroupResourcePlacementService.FACTORY_LINK); MockDockerHostAdapterService dockerAdapterService = new MockDockerHostAdapterService(); host.startService(Operation.createPost(UriUtils.buildUri(host, MockDockerHostAdapterService.class)), dockerAdapterService); waitForServiceAvailability(MockDockerHostAdapterService.SELF_LINK); host.assumeIdentity(buildUserServicePath(USER_EMAIL_ADMIN)); project = createProject("test-project"); testProject1 = createProject("test-project1"); testProject2 = createProject("test-project2");
private ContainerHostSpec createContainerHostSpec(List<String> tenantLinks, ContainerHostType hostType, String clusterName, String clusterDetails) throws Throwable { ContainerHostSpec ch = new ContainerHostSpec(); ch.hostState = createComputeState(hostType, ComputeService.PowerState.ON, tenantLinks, clusterName, clusterDetails); return ch; }
private ContainerHostSpec createContainerHostSpec(List<String> tenantLinks, ContainerHostType hostType) throws Throwable { return createContainerHostSpec(tenantLinks, hostType, null, null); }
@Test public void testGetCompositeComponent() { CompositeComponent state1 = new CompositeComponent(); state1.name = "test"; state1.componentLinks = Collections.singletonList("test"); CompositeComponent state2 = new CompositeComponent(); state2.name = "test"; state2.componentLinks = Collections.singletonList("test"); state1 = doPostWithProjectHeader(state1, CompositeComponentFactoryService .SELF_LINK, testProject1.documentSelfLink, CompositeComponent.class); state2 = doPostWithProjectHeader(state2, CompositeComponentFactoryService .SELF_LINK, testProject2.documentSelfLink, CompositeComponent.class); ServiceDocumentQueryResult project1Docs = getDocumentsWithinProject( CompositeComponentFactoryService.SELF_LINK, testProject1.documentSelfLink); assertEquals(1, project1Docs.documentLinks.size()); assertTrue(project1Docs.documentLinks.contains(state1.documentSelfLink)); ServiceDocumentQueryResult project2Docs = getDocumentsWithinProject( CompositeComponentFactoryService.SELF_LINK, testProject2.documentSelfLink); assertEquals(1, project2Docs.documentLinks.size()); assertTrue(project2Docs.documentLinks.contains(state2.documentSelfLink)); }
@Test public void testCreateCompositeComponentIntercept() { CompositeComponent state = new CompositeComponent(); state.name = "test"; state.componentLinks = Collections.singletonList("test"); CompositeComponent doc = doPostWithProjectHeader(state, CompositeComponentFactoryService .SELF_LINK, project.documentSelfLink, CompositeComponent.class); assertTenantLinks(doc, project.documentSelfLink); assertEquals(state.name, doc.name); assertEquals(state.componentLinks, doc.componentLinks); }
doPatch(roles, testProject1.documentSelfLink); host.assumeIdentity(buildUserServicePath(USER_EMAIL_GLORIA)); ContainerHostSpec hostSpec = createContainerHostSpec(Collections .singletonList(testProject1.documentSelfLink), ContainerHostType.DOCKER); doPostWithProjectHeader(hostSpec, ClusterService.SELF_LINK, testProject1 .documentSelfLink, ClusterDto.class); fail("Create cluster as project member should've failed."); host.assumeIdentity(buildUserServicePath(USER_EMAIL_BASIC_USER)); doPostWithProjectHeader(hostSpec, ClusterService.SELF_LINK, testProject1 .documentSelfLink, ClusterDto.class); fail("Create cluster as project member should've failed."); host.assumeIdentity(buildUserServicePath(USER_EMAIL_ADMIN)); roles = new ProjectRoles(); roles.members = new PrincipalRoleAssignment(); roles.members.remove = Collections.singletonList(USER_EMAIL_GLORIA); roles.administrators.add = Collections.singletonList(USER_EMAIL_GLORIA); doPatch(roles, testProject1.documentSelfLink); host.assumeIdentity(buildUserServicePath(USER_EMAIL_GLORIA)); doPostWithProjectHeader(hostSpec, ClusterService.SELF_LINK, testProject1 .documentSelfLink, ClusterDto.class); fail("Create cluster as project member should've failed.");
@Test public void testCreateClusterWithIntercept() throws Throwable { ContainerHostSpec hostSpec = new ContainerHostSpec(); hostSpec.hostState = new ComputeState(); hostSpec.hostState.id = UUID.randomUUID().toString(); hostSpec.hostState.address = "test"; hostSpec.hostState.customProperties = new HashMap<>(); hostSpec.hostState.customProperties.put(ContainerHostService .HOST_DOCKER_ADAPTER_TYPE_PROP_NAME, "API"); hostSpec.hostState.customProperties.put(ContainerHostService.CONTAINER_HOST_TYPE_PROP_NAME, "DOCKER"); ClusterDto dto = doPostWithProjectHeader(hostSpec, ClusterService.SELF_LINK, project .documentSelfLink, ClusterDto.class); ComputeState computeState = getDocument(ComputeState.class, dto.nodeLinks.get(0)); assertTrue(computeState.tenantLinks.contains(project.documentSelfLink)); }
private ProjectState createProject(String name) throws Throwable { ProjectState state = new ProjectState(); state.name = name; return doPost(state, ProjectFactoryService.SELF_LINK); }
@Override protected VerificationHost createHost() throws Throwable { String[] customArgs = { CommandLineArgumentParser.ARGUMENT_PREFIX + AuthUtil.LOCAL_USERS_FILE + CommandLineArgumentParser.ARGUMENT_ASSIGNMENT + ProjectInterceptorTest.class.getResource(FILE_LOCAL_USERS).toURI().getPath() }; return createHost(customArgs); }
@Test public void testGetContainerNetworkDescription() { ContainerNetworkDescription state1 = new ContainerNetworkDescription(); state1.name = "test"; state1.externalName = "test"; state1 = doPostWithProjectHeader(state1, ContainerNetworkDescriptionService.FACTORY_LINK, testProject1.documentSelfLink, ContainerNetworkDescription.class); ContainerNetworkDescription state2 = new ContainerNetworkDescription(); state2.name = "test"; state2.externalName = "test"; state2 = doPostWithProjectHeader(state2, ContainerNetworkDescriptionService.FACTORY_LINK, testProject2.documentSelfLink, ContainerNetworkDescription.class); ServiceDocumentQueryResult project1Docs = getDocumentsWithinProject( ContainerNetworkDescriptionService.FACTORY_LINK, testProject1.documentSelfLink); assertEquals(1, project1Docs.documentLinks.size()); assertTrue(project1Docs.documentLinks.contains(state1.documentSelfLink)); ServiceDocumentQueryResult project2Docs = getDocumentsWithinProject( ContainerNetworkDescriptionService.FACTORY_LINK, testProject2.documentSelfLink); assertEquals(1, project2Docs.documentLinks.size()); assertTrue(project2Docs.documentLinks.contains(state2.documentSelfLink)); }
@Test public void testCreateContainerNetworkDescriptionIntercept() { ContainerNetworkDescription state = new ContainerNetworkDescription(); state.name = "test"; state.externalName = "test"; ContainerNetworkDescription doc = doPostWithProjectHeader(state, ContainerNetworkDescriptionService.FACTORY_LINK, project.documentSelfLink, ContainerNetworkDescription.class); assertTenantLinks(doc, project.documentSelfLink); assertEquals(state.name, doc.name); assertEquals(state.externalName, doc.externalName); }
@Test public void testCreateDocumentWithoutInterceptorWithoutHeader() throws Throwable { CompositeComponent state = new CompositeComponent(); state.name = "test"; state.componentLinks = Collections.singletonList("test"); CompositeComponent doc = doPost(state, CompositeComponentFactoryService.SELF_LINK); assertEquals(state.name, doc.name); assertEquals(state.componentLinks, doc.componentLinks); }
@Test public void testGetContainerService() { ContainerState state1 = new ContainerState(); state1.name = "test"; state1.image = "test"; state1 = doPostWithProjectHeader(state1, ContainerFactoryService.SELF_LINK, testProject1.documentSelfLink, ContainerState.class); ContainerState state2 = new ContainerState(); state2.name = "test"; state2.image = "test"; state2 = doPostWithProjectHeader(state2, ContainerFactoryService.SELF_LINK, testProject2.documentSelfLink, ContainerState.class); ServiceDocumentQueryResult project1Docs = getDocumentsWithinProject( ContainerFactoryService.SELF_LINK, testProject1.documentSelfLink); assertEquals(1, project1Docs.documentLinks.size()); assertTrue(project1Docs.documentLinks.contains(state1.documentSelfLink)); ServiceDocumentQueryResult project2Docs = getDocumentsWithinProject( ContainerFactoryService.SELF_LINK, testProject2.documentSelfLink); assertEquals(1, project2Docs.documentLinks.size()); assertTrue(project2Docs.documentLinks.contains(state2.documentSelfLink)); }
@Test public void testCreateContainerVolumeDescriptionIntercept() { ContainerVolumeDescription state = new ContainerVolumeDescription(); state.name = "test"; state.externalName = "test"; ContainerVolumeDescription doc = doPostWithProjectHeader(state, ContainerVolumeDescriptionService.FACTORY_LINK, project.documentSelfLink, ContainerVolumeDescription.class); assertTenantLinks(doc, project.documentSelfLink); assertEquals(state.name, doc.name); assertEquals(state.externalName, doc.externalName); }
@Test public void testGetContainerVolume() { ContainerVolumeState state1 = new ContainerVolumeState(); state1.name = "test"; state1.external = true; ContainerVolumeState state2 = new ContainerVolumeState(); state2.name = "test"; state2.external = true; state1 = doPostWithProjectHeader(state1, ContainerVolumeService .FACTORY_LINK, testProject1.documentSelfLink, ContainerVolumeState.class); state2 = doPostWithProjectHeader(state2, ContainerVolumeService .FACTORY_LINK, testProject2.documentSelfLink, ContainerVolumeState.class); ServiceDocumentQueryResult project1Docs = getDocumentsWithinProject( ContainerVolumeService.FACTORY_LINK, testProject1.documentSelfLink); assertEquals(1, project1Docs.documentLinks.size()); assertTrue(project1Docs.documentLinks.contains(state1.documentSelfLink)); ServiceDocumentQueryResult project2Docs = getDocumentsWithinProject( ContainerVolumeService.FACTORY_LINK, testProject2.documentSelfLink); assertEquals(1, project2Docs.documentLinks.size()); assertTrue(project2Docs.documentLinks.contains(state2.documentSelfLink)); }
@Test public void testCreateCompositeDescriptionIntercept() { CompositeDescription state = new CompositeDescription(); state.name = "test"; state.descriptionLinks = Collections.singletonList("test"); CompositeDescription doc = doPostWithProjectHeader(state, CompositeDescriptionFactoryService.SELF_LINK, project.documentSelfLink, CompositeDescription.class); assertTenantLinks(doc, project.documentSelfLink); assertEquals(state.name, doc.name); assertEquals(state.descriptionLinks, doc.descriptionLinks); }
@Test public void testGetContainerVolumeDescription() { ContainerVolumeDescription state1 = new ContainerVolumeDescription(); state1.name = "test"; state1.externalName = "test"; ContainerVolumeDescription state2 = new ContainerVolumeDescription(); state2.name = "test"; state2.externalName = "test"; state1 = doPostWithProjectHeader(state1, ContainerVolumeDescriptionService.FACTORY_LINK, testProject1.documentSelfLink, ContainerVolumeDescription.class); state2 = doPostWithProjectHeader(state2, ContainerVolumeDescriptionService.FACTORY_LINK, testProject2.documentSelfLink, ContainerVolumeDescription.class); ServiceDocumentQueryResult project1Docs = getDocumentsWithinProject( ContainerVolumeDescriptionService.FACTORY_LINK, testProject1.documentSelfLink); assertEquals(1, project1Docs.documentLinks.size()); assertTrue(project1Docs.documentLinks.contains(state1.documentSelfLink)); ServiceDocumentQueryResult project2Docs = getDocumentsWithinProject( ContainerVolumeDescriptionService.FACTORY_LINK, testProject2.documentSelfLink); assertEquals(1, project2Docs.documentLinks.size()); assertTrue(project2Docs.documentLinks.contains(state2.documentSelfLink)); }
@Test public void testCreateContainerDescriptionIntercept() throws Throwable { ContainerDescription desc = new ContainerDescription(); desc.name = "test"; desc.image = "test"; ContainerDescription newDesc = doPostWithProjectHeader(desc, ContainerDescriptionService .FACTORY_LINK, project.documentSelfLink, ContainerDescription.class); assertTenantLinks(newDesc, project.documentSelfLink); assertEquals(desc.name, newDesc.name); assertEquals(desc.image, newDesc.image); }
@Test public void testGetCompositeDescription() { CompositeDescription state1 = new CompositeDescription(); state1.name = "test"; state1.descriptionLinks = Collections.singletonList("test"); CompositeDescription state2 = new CompositeDescription(); state2.name = "test"; state2.descriptionLinks = Collections.singletonList("test"); state1 = doPostWithProjectHeader(state1, CompositeDescriptionFactoryService.SELF_LINK, testProject1.documentSelfLink, CompositeDescription.class); state2 = doPostWithProjectHeader(state2, CompositeDescriptionFactoryService.SELF_LINK, testProject2.documentSelfLink, CompositeDescription.class); ServiceDocumentQueryResult project1Docs = getDocumentsWithinProject( CompositeDescriptionFactoryService.SELF_LINK, testProject1.documentSelfLink); assertEquals(1, project1Docs.documentLinks.size()); assertTrue(project1Docs.documentLinks.contains(state1.documentSelfLink)); ServiceDocumentQueryResult project2Docs = getDocumentsWithinProject( CompositeDescriptionFactoryService.SELF_LINK, testProject2.documentSelfLink); assertEquals(1, project2Docs.documentLinks.size()); assertTrue(project2Docs.documentLinks.contains(state2.documentSelfLink)); }
@Test public void testCreateContainerVolumeIntercept() { ContainerVolumeState state = new ContainerVolumeState(); state.name = "test"; state.external = true; ContainerVolumeState doc = doPostWithProjectHeader(state, ContainerVolumeService .FACTORY_LINK, project.documentSelfLink, ContainerVolumeState.class); assertTenantLinks(doc, project.documentSelfLink); assertEquals(state.name, doc.name); assertEquals(state.external, doc.external); }