use of com.mercedesbenz.sechub.domain.administration.project.ProjectJsonInput.ProjectMetaData in project sechub by mercedes-benz.
the class ProjectAdministrationRestControllerMockTest method when_validator_marks_no_errors___calling_create_project_url_calls_create_service_and_returns_http_200.
@Test
public void when_validator_marks_no_errors___calling_create_project_url_calls_create_service_and_returns_http_200() throws Exception {
/* execute + test @formatter:off */
this.mockMvc.perform(post(https(PORT_USED).buildAdminCreatesProjectUrl()).contentType(MediaType.APPLICATION_JSON_VALUE).content("{\"name\":\"projectId1\",\"description\":\"description1\",\"owner\":\"ownerName1\",\"whiteList\":{\"uris\":[\"192.168.1.1\",\"192.168.1.2\"]}}")).andExpect(status().isCreated());
verify(creationService).createProject("projectId1", "description1", "ownerName1", new LinkedHashSet<>(Arrays.asList(new URI("192.168.1.1"), new URI("192.168.1.2"))), new ProjectMetaData());
/* @formatter:on */
}
use of com.mercedesbenz.sechub.domain.administration.project.ProjectJsonInput.ProjectMetaData in project sechub by mercedes-benz.
the class ProjectAdministrationRestController method createProject.
/* @formatter:off */
@UseCaseAdminCreatesProject(@Step(number = 1, name = "Rest call", needsRestDoc = true, description = "Administrator creates a new project by calling rest api"))
@RequestMapping(path = AdministrationAPIConstants.API_CREATE_PROJECT, method = RequestMethod.POST, produces = { MediaType.APPLICATION_JSON_VALUE })
@ResponseStatus(HttpStatus.CREATED)
public void createProject(@RequestBody @Valid ProjectJsonInput input) {
Set<URI> whiteListedURIs = new LinkedHashSet<>();
Optional<ProjectWhiteList> whitelistOption = input.getWhiteList();
if (whitelistOption.isPresent()) {
ProjectWhiteList whiteList = whitelistOption.get();
whiteListedURIs.addAll(whiteList.getUris());
}
ProjectMetaData metaData = new ProjectMetaData();
if (input.getMetaData().isPresent()) {
metaData = input.getMetaData().get();
}
/* @formatter:on */
creationService.createProject(input.getName(), input.getDescription(), input.getOwner(), whiteListedURIs, metaData);
}
use of com.mercedesbenz.sechub.domain.administration.project.ProjectJsonInput.ProjectMetaData in project sechub by mercedes-benz.
the class ProjectCreationService method createProject.
@Validated
/* @formatter:off */
@UseCaseAdminCreatesProject(@Step(number = 2, name = "Create project", description = "The service will create the project when not already existing with such name."))
public /* @formatter:on */
void createProject(@NotNull String projectId, @NotNull String description, @NotNull String owner, @NotNull Set<URI> whitelist, @NotNull ProjectMetaData metaData) {
LOG.info("Administrator {} triggers create of project:{}, having owner:{}", userContext.getUserId(), projectId, owner);
assertion.assertIsValidProjectId(projectId);
assertion.assertIsValidUserId(owner);
assertion.assertIsValidProjectDescription(description);
/* assert found */
Optional<Project> foundProject = projectRepository.findById(projectId);
if (foundProject.isPresent()) {
throw new AlreadyExistsException("Project '" + projectId + "' already exists");
}
Optional<User> foundOwner = userRepository.findById(owner);
if (!foundOwner.isPresent()) {
throw new NotFoundException("Owner '" + owner + "' not found");
}
/* setup */
Project project = new Project();
project.id = projectId;
project.description = description;
User ownerUser = foundOwner.get();
project.owner = ownerUser;
/**
* add only accepted/valid URIs - sanitize
*/
whitelist.stream().filter(uri -> uriValidation.validate(uri).isValid()).forEach(project.getWhiteList()::add);
List<ProjectMetaDataEntity> metaDataEntities = metaData.getMetaDataMap().entrySet().stream().map(entry -> new ProjectMetaDataEntity(projectId, entry.getKey(), entry.getValue())).collect(Collectors.toList());
project.metaData.addAll(metaDataEntities);
/* store */
persistenceService.saveInOwnTransaction(project);
sendProjectCreatedEvent(projectId, whitelist);
sendRefreshUserAuth(ownerUser);
}
use of com.mercedesbenz.sechub.domain.administration.project.ProjectJsonInput.ProjectMetaData in project sechub by mercedes-benz.
the class ProjectJsonInputValidationTest method when_metadatavalidation_with_too_long_value_invalid_api_error.
@Test
public void when_metadatavalidation_with_too_long_value_invalid_api_error() {
/* prepare */
String value = TestUtil.createRAndomString(260);
ProjectMetaData metaData = new ProjectMetaData();
metaData.getMetaDataMap().put("key", value);
when(input.getMetaData()).thenReturn(Optional.of(metaData));
when(metaDataValidation.validate(any())).thenReturn(failedResult);
/* execute */
toTest.checkWhitelist(errors, input);
/* test */
verify(errors, never()).rejectValue(eq(ProjectJsonInput.PROPERTY_METADATA), eq("api.error.metadata.invalid"), any());
}
use of com.mercedesbenz.sechub.domain.administration.project.ProjectJsonInput.ProjectMetaData in project sechub by mercedes-benz.
the class ProjectJsonInputValidationTest method when_metadatavalidation_with_too_long_key_invalid_api_error.
@Test
public void when_metadatavalidation_with_too_long_key_invalid_api_error() {
/* prepare */
String key = TestUtil.createRAndomString(61);
ProjectMetaData metaData = new ProjectMetaData();
metaData.getMetaDataMap().put(key, "value");
when(input.getMetaData()).thenReturn(Optional.of(metaData));
when(metaDataValidation.validate(any())).thenReturn(failedResult);
/* execute */
toTest.checkWhitelist(errors, input);
/* test */
verify(errors, never()).rejectValue(eq(ProjectJsonInput.PROPERTY_METADATA), eq("api.error.metadata.invalid"), any());
}
Aggregations