ResourceManagerRpc.Option.FILTER, "id:* name:myProject labels.color:blue LABELS.SIZE:*"); com.google.api.services.cloudresourcemanager.model.Project matchingProject = new com.google.api.services.cloudresourcemanager.model.Project() .setProjectId("matching-project") .setName("MyProject") .setLabels(ImmutableMap.of("color", "blue", "size", "big")); com.google.api.services.cloudresourcemanager.model.Project nonMatchingProject1 = new com.google.api.services.cloudresourcemanager.model.Project() .setProjectId("non-matching-project1") .setName("myProject"); nonMatchingProject1.setLabels(ImmutableMap.of("color", "blue")); com.google.api.services.cloudresourcemanager.model.Project nonMatchingProject2 = new com.google.api.services.cloudresourcemanager.model.Project() .setProjectId("non-matching-project2") .setName("myProj") .setLabels(ImmutableMap.of("color", "blue", "size", "big")); com.google.api.services.cloudresourcemanager.model.Project nonMatchingProject3 = new com.google.api.services.cloudresourcemanager.model.Project() .setProjectId("non-matching-project3"); rpc.create(matchingProject);
com.google.api.services.cloudresourcemanager.model.Project toPb() { com.google.api.services.cloudresourcemanager.model.Project projectPb = new com.google.api.services.cloudresourcemanager.model.Project(); projectPb.setName(name); projectPb.setProjectId(projectId); projectPb.setLabels(labels); projectPb.setProjectNumber(projectNumber); if (state != null) { projectPb.setLifecycleState(state.toString()); } if (createTimeMillis != null) { projectPb.setCreateTime( DateTimeFormatter.ISO_DATE_TIME .withZone(ZoneOffset.UTC) .format(Instant.ofEpochMilli(createTimeMillis))); } if (parent != null) { projectPb.setParent(parent.toPb()); } return projectPb; }
@Test public void testIsInvalidProjectLabels() { com.google.api.services.cloudresourcemanager.model.Project project = new com.google.api.services.cloudresourcemanager.model.Project() .setProjectId("some-valid-project-id"); String invalidLabelMessageSubstring = "invalid label entry";
@Test public void testReplaceWhenDeleteRequested() { rpc.create(COMPLETE_PROJECT); rpc.delete(COMPLETE_PROJECT.getProjectId()); com.google.api.services.cloudresourcemanager.model.Project anotherProject = new com.google.api.services.cloudresourcemanager.model.Project() .setProjectId(COMPLETE_PROJECT.getProjectId()); try { rpc.replace(anotherProject); fail("Should fail because the project is not ACTIVE."); } catch (ResourceManagerException e) { assertEquals(400, e.getCode()); assertTrue(e.getMessage().contains("the lifecycle state was not ACTIVE")); } }
@Test public void testReplaceWhenDeleteInProgress() { rpc.create(COMPLETE_PROJECT); RESOURCE_MANAGER_HELPER.changeLifecycleState( COMPLETE_PROJECT.getProjectId(), "DELETE_IN_PROGRESS"); com.google.api.services.cloudresourcemanager.model.Project anotherProject = new com.google.api.services.cloudresourcemanager.model.Project() .setProjectId(COMPLETE_PROJECT.getProjectId()); try { rpc.replace(anotherProject); fail("Should fail because the project is not ACTIVE."); } catch (ResourceManagerException e) { assertEquals(400, e.getCode()); assertTrue(e.getMessage().contains("the lifecycle state was not ACTIVE")); } }
return fullProject; Project project = new Project(); for (String field : fields) { switch (field) {
private static com.google.api.services.cloudresourcemanager.model.Project copyFrom( com.google.api.services.cloudresourcemanager.model.Project from) { return new com.google.api.services.cloudresourcemanager.model.Project() .setProjectId(from.getProjectId()) .setName(from.getName()) .setLabels(from.getLabels() != null ? ImmutableMap.copyOf(from.getLabels()) : null) .setProjectNumber(from.getProjectNumber()) .setCreateTime(from.getCreateTime()) .setLifecycleState(from.getLifecycleState()) .setParent(from.getParent() != null ? from.getParent().clone() : null); }
@Test public void testReplaceRemovingParent() { rpc.create(PROJECT_WITH_PARENT); com.google.api.services.cloudresourcemanager.model.Project anotherProject = new com.google.api.services.cloudresourcemanager.model.Project() .setProjectId(PROJECT_WITH_PARENT.getProjectId()); try { rpc.replace(anotherProject); fail("Should fail because the project's parent was unset."); } catch (ResourceManagerException e) { assertEquals(400, e.getCode()); assertEquals( "The server currently only supports setting the parent once " + "and does not allow unsetting it.", e.getMessage()); } }
@Test public void testReplaceAddingParent() { rpc.create(COMPLETE_PROJECT); com.google.api.services.cloudresourcemanager.model.Project anotherProject = new com.google.api.services.cloudresourcemanager.model.Project() .setProjectId(COMPLETE_PROJECT.getProjectId()) .setParent(PARENT); try { rpc.replace(anotherProject); fail("Should fail because the project's parent was modified after creation."); } catch (ResourceManagerException e) { assertEquals(400, e.getCode()); assertEquals( "The server currently only supports setting the parent once " + "and does not allow unsetting it.", e.getMessage()); } }
Map<String, String> newLabels = ImmutableMap.of("new k1", "new v1"); com.google.api.services.cloudresourcemanager.model.Project anotherCompleteProject = new com.google.api.services.cloudresourcemanager.model.Project() .setProjectId(COMPLETE_PROJECT.getProjectId()) .setName(newName) assertEquals(createdProject.getLifecycleState(), returnedProject.getLifecycleState()); com.google.api.services.cloudresourcemanager.model.Project nonexistantProject = new com.google.api.services.cloudresourcemanager.model.Project(); nonexistantProject.setProjectId("some-project-id-that-does-not-exist"); try {
@Test public void testIsInvalidProjectId() { com.google.api.services.cloudresourcemanager.model.Project project = new com.google.api.services.cloudresourcemanager.model.Project(); String invalidIDMessageSubstring = "invalid ID"; expectInvalidArgumentException(project, "Project ID cannot be empty."); project.setProjectId("abcde"); expectInvalidArgumentException(project, invalidIDMessageSubstring); project.setProjectId("this-project-id-is-more-than-thirty-characters-long"); expectInvalidArgumentException(project, invalidIDMessageSubstring); project.setProjectId("project-id-with-invalid-character-?"); expectInvalidArgumentException(project, invalidIDMessageSubstring); project.setProjectId("-invalid-start-character"); expectInvalidArgumentException(project, invalidIDMessageSubstring); project.setProjectId("invalid-ending-character-"); expectInvalidArgumentException(project, invalidIDMessageSubstring); project.setProjectId("some-valid-project-id-12345"); rpc.create(project); assertNotNull(rpc.get(project.getProjectId(), EMPTY_RPC_OPTIONS)); }
@Test public void testIsInvalidProjectName() { com.google.api.services.cloudresourcemanager.model.Project project = new com.google.api.services.cloudresourcemanager.model.Project() .setProjectId("some-project-id"); rpc.create(project); assertNull(rpc.get(project.getProjectId(), EMPTY_RPC_OPTIONS).getName()); RESOURCE_MANAGER_HELPER.removeProject(project.getProjectId()); project.setName("This is a valid name-'\"!"); rpc.create(project); assertEquals(project.getName(), rpc.get(project.getProjectId(), EMPTY_RPC_OPTIONS).getName()); RESOURCE_MANAGER_HELPER.removeProject(project.getProjectId()); project.setName("invalid-character-,"); try { rpc.create(project); fail("Should fail because of invalid project name."); } catch (ResourceManagerException e) { assertEquals(400, e.getCode()); assertTrue(e.getMessage().contains("invalid name")); } }
com.google.api.services.cloudresourcemanager.model.Project toPb() { com.google.api.services.cloudresourcemanager.model.Project projectPb = new com.google.api.services.cloudresourcemanager.model.Project(); projectPb.setName(name); projectPb.setProjectId(projectId); projectPb.setLabels(labels); projectPb.setProjectNumber(projectNumber); if (state != null) { projectPb.setLifecycleState(state.toString()); } if (createTimeMillis != null) { projectPb.setCreateTime(ISODateTimeFormat.dateTime().withZoneUTC().print(createTimeMillis)); } if (parent != null) { projectPb.setParent(parent.toPb()); } return projectPb; }
com.google.api.services.cloudresourcemanager.model.Project toPb() { com.google.api.services.cloudresourcemanager.model.Project projectPb = new com.google.api.services.cloudresourcemanager.model.Project(); projectPb.setName(name); projectPb.setProjectId(projectId); projectPb.setLabels(labels); projectPb.setProjectNumber(projectNumber); if (state != null) { projectPb.setLifecycleState(state.toString()); } if (createTimeMillis != null) { projectPb.setCreateTime(ISODateTimeFormat.dateTime().withZoneUTC().print(createTimeMillis)); } if (parent != null) { projectPb.setParent(parent.toPb()); } return projectPb; }
@Test public void loadUserProjects_keeps_projectsWithSameName() { // two projects with the same name, different IDs. Project project1 = new Project(); String sameProjectName = "project"; project1.setName(sameProjectName); project1.setProjectId("GCP ID 1"); Project project2 = new Project(); project2.setName(sameProjectName); project2.setProjectId("GCP ID 2"); mockListProjectsResponse(Arrays.asList(project1, project2)); projectLoader.loadUserProjectsInBackground(mockUser); verify(mockFutureCallback).onSuccess(Arrays.asList(project1, project2)); }
@Before public void setUp() { model = new ProjectListTableModel(); testProject1 = new Project(); testProject1.setName("test-project"); testProject1.setProjectId("test-project-ID"); testProject2 = new Project(); testProject2.setName("test-project-2"); testProject2.setProjectId("test-project-2-ID"); }
@Test public void loadUserProjects_sortsProjects_byName() { Project aProject = new Project(); aProject.setName("a project"); aProject.setProjectId("The ID"); mockListProjectsResponse(Arrays.asList(testProject1, testProject2, aProject)); projectLoader.loadUserProjectsInBackground(mockUser); verify(mockFutureCallback).onSuccess(Arrays.asList(aProject, testProject1, testProject2)); }
@Before public void setUp() { projectSelectionDialog.setProjectLoader(mockProjectLoader); projectSelectionDialog.setDialogWrapper(dialogWrapper); doReturn(mockDialogButton).when(projectSelectionDialog).getDialogButton(any()); doNothing().when(projectSelectionDialog).installTableSpeedSearch(any()); doNothing().when(projectSelectionDialog).setLoading(anyBoolean()); projectSelectionDialog.loadAllProjects(); testUiProject = CloudProject.create(TEST_PROJECT_NAME, TEST_PROJECT_ID, TEST_USER_EMAIL); testGoogleProject = new Project(); testGoogleProject.setName(TEST_PROJECT_NAME); testGoogleProject.setProjectId(TEST_PROJECT_NAME + "-id"); when(mockTestUser.getEmail()).thenReturn(TEST_USER_EMAIL); }
@Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); options = PipelineOptionsFactory.create(); options.as(GcsOptions.class).setGcsUtil(mockGcsUtil); options.as(GcpOptions.class).setProject("foo"); options.as(GcpOptions.class).setZone("us-north1-a"); when(mockCrmClient.projects()).thenReturn(mockProjects); when(mockProjects.get(any(String.class))).thenReturn(mockGet); fakeProject = new Project().setProjectNumber(1L); }
@Test public void getCloudProject_returns_selectedProject() { prepareOneTestUserOneTestProjectDialog(testUiProject); Project secondProject = new Project(); secondProject.setName("project-2"); secondProject.setProjectId("project-2-id"); mockUserProjects(mockTestUser, Arrays.asList(testGoogleProject, secondProject)); cleanLoadUsersAndProjects(); projectSelectionDialog.showProjectInList(secondProject.getName()); CloudProject selectedProject = projectSelectionDialog.getSelectedProject(); CloudProject expected = CloudProject.create( secondProject.getName(), secondProject.getProjectId(), mockTestUser.getEmail()); assertThat(selectedProject).isEqualTo(expected); }