import org.sonarqube.ws.WsProjectLinks.CreateWsResponse;
import org.sonarqube.ws.client.projectlinks.CreateWsRequest;
-import static com.google.common.base.Preconditions.checkArgument;
import static org.sonar.core.util.Slug.slugify;
import static org.sonar.core.util.Uuids.UUID_EXAMPLE_01;
import static org.sonar.server.ws.KeyExamples.KEY_PROJECT_EXAMPLE_001;
action.createParam(PARAM_NAME)
.setRequired(true)
+ .setMaximumLength(LINK_NAME_MAX_LENGTH)
.setDescription("Link name")
.setExampleValue("Custom");
action.createParam(PARAM_URL)
.setRequired(true)
+ .setMaximumLength(LINK_URL_MAX_LENGTH)
.setDescription("Link url")
.setExampleValue("http://example.com");
}
}
private CreateWsResponse doHandle(CreateWsRequest createWsRequest) {
- validateRequest(createWsRequest);
-
String name = createWsRequest.getName();
String url = createWsRequest.getUrl();
.setUrl(request.mandatoryParam(PARAM_URL));
}
- private static void validateRequest(CreateWsRequest request) {
- checkArgument(request.getName().length() <= LINK_NAME_MAX_LENGTH, "Link name cannot be longer than %s characters", LINK_NAME_MAX_LENGTH);
- checkArgument(request.getUrl().length() <= LINK_URL_MAX_LENGTH, "Link url cannot be longer than %s characters", LINK_URL_MAX_LENGTH);
- }
-
private static String nameToType(String name) {
String slugified = slugify(name);
return slugified.substring(0, Math.min(slugified.length(), LINK_TYPE_MAX_LENGTH));
import org.sonarqube.ws.WsProjects.CreateWsResponse.Project;
import org.sonarqube.ws.client.project.CreateRequest;
-import static joptsimple.internal.Strings.repeat;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
call(CreateRequest.builder().setKey(DEFAULT_PROJECT_KEY).setName(DEFAULT_PROJECT_NAME).build());
}
- @Test
- public void fail_when_project_parameter_is_longer_than_400() {
- userSession.addPermission(PROVISION_PROJECTS, db.getDefaultOrganization());
-
- expectedException.expect(IllegalArgumentException.class);
- expectedException.expectMessage("'project' length (401) is longer than the maximum authorized (400)");
-
- ws.newRequest().setMethod(POST.name())
- .setParam("project", repeat('a', 401))
- .setParam("name", DEFAULT_PROJECT_NAME)
- .execute();
- }
-
- @Test
- public void fail_when_name_parameter_is_longer_than_2000() {
- userSession.addPermission(PROVISION_PROJECTS, db.getDefaultOrganization());
-
- expectedException.expect(IllegalArgumentException.class);
- expectedException.expectMessage("'name' length (2001) is longer than the maximum authorized (2000)");
-
- ws.newRequest().setMethod(POST.name())
- .setParam("project", "key")
- .setParam("name", repeat('a', 2001))
- .execute();
- }
-
@Test
public void test_example() {
userSession.addPermission(PROVISION_PROJECTS, db.getDefaultOrganization());