@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)); }
synchronized Response replace(String projectId, Project project) { Project originalProject = projects.get(projectId); if (originalProject == null) { return Error.PERMISSION_DENIED.response( "Error when replacing " + projectId + " because the project was not found."); } else if (!originalProject.getLifecycleState().equals("ACTIVE")) { return Error.FAILED_PRECONDITION.response( "Error when replacing " + projectId + " because the lifecycle state was not ACTIVE."); } else if (!Objects.equal(originalProject.getParent(), project.getParent())) { return Error.INVALID_ARGUMENT.response( "The server currently only supports setting the parent once " + "and does not allow unsetting it."); } project.setProjectId(projectId); project.setLifecycleState(originalProject.getLifecycleState()); project.setCreateTime(originalProject.getCreateTime()); project.setProjectNumber(originalProject.getProjectNumber()); // replace cannot fail because both this method and removeProject are synchronized projects.replace(projectId, project); try { return new Response(HTTP_OK, jsonFactory.toString(project)); } catch (IOException e) { return Error.INTERNAL_ERROR.response("Error when serializing project " + projectId); } }
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); rpc.create(nonMatchingProject1);
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; }
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"; project.setLabels(ImmutableMap.of("", "v1"));
@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")); } }
break; case "projectId": project.setProjectId(fullProject.getProjectId()); break; case "projectNumber":
@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()); } }
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); }
com.google.api.services.cloudresourcemanager.model.Project anotherCompleteProject = new com.google.api.services.cloudresourcemanager.model.Project() .setProjectId(COMPLETE_PROJECT.getProjectId()) .setName(newName) .setLabels(newLabels) 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 { rpc.replace(nonexistantProject);
@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()); } }
@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")); } }
@Test public void projects_withEmptyId_filteredFromResult() { List<Project> projects = Arrays.asList(testProject1, testProject2); testProject1.setProjectId(null); testProject2.setProjectId(""); mockListProjectsResponse(projects); projectLoader.loadUserProjectsInBackground(mockUser); verify(mockFutureCallback).onSuccess(Collections.emptyList()); }
@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 setUpProject() { modelItem.getProject().setName(PROJECT_NAME); modelItem.getProject().setProjectId(PROJECT_ID); }
@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); }