blob: 1d209e1a0ecdb246da8c112878489b256b179e0b [file] [log] [blame]
// Copyright (C) 2023 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.acceptance.rest.binding;
import static com.google.gerrit.acceptance.rest.util.RestCall.Method.GET;
import static org.apache.http.HttpStatus.SC_BAD_REQUEST;
import static org.apache.http.HttpStatus.SC_OK;
import com.google.common.collect.ImmutableList;
import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.rest.util.RestApiCallHelper;
import com.google.gerrit.acceptance.rest.util.RestCall;
import com.google.gerrit.server.group.SystemGroupBackend;
import org.junit.Test;
public class ListProjectOptionsRestApiBindingsIT extends AbstractDaemonTest {
private static final ImmutableList<RestCall> LIST_PROJECTS_WITH_OPTIONS =
ImmutableList.of(
// =========================
// === Supported options ===
// =========================
get200OK("/projects/?show-branch=refs/heads/master"),
get200OK("/projects/?b=refs/heads/master"),
get200OK("/projects/?format=TEXT"),
get200OK("/projects/?format=JSON"),
get200OK("/projects/?format=JSON_COMPACT"),
get200OK("/projects/?tree"),
get200OK("/projects/?tree=true"),
get200OK("/projects/?tree=false"),
get200OK("/projects/?t"),
get200OK("/projects/?t=true"),
get200OK("/projects/?t=false"),
get200OK("/projects/?type=ALL"),
get200OK("/projects/?type=CODE"),
get200OK("/projects/?type=PERMISSIONS"),
get200OK("/projects/?description"),
get200OK("/projects/?description=true"),
get200OK("/projects/?description=false"),
get200OK("/projects/?d"),
get200OK("/projects/?d=true"),
get200OK("/projects/?d=false"),
get200OK("/projects/?all"),
get200OK("/projects/?all=true"),
get200OK("/projects/?all=false"),
get200OK("/projects/?state=ACTIVE"),
get200OK("/projects/?state=READ_ONLY"),
get200OK("/projects/?state=HIDDEN"),
get200OK("/projects/?limit=10"),
get200OK("/projects/?n=10"),
get200OK("/projects/?start=10"),
get200OK("/projects/?S=10"),
get200OK("/projects/?prefix=my-prefix"),
get200OK("/projects/?p=my-prefix"),
get200OK("/projects/?match=my-match"),
get200OK("/projects/?m=my-match"),
get200OK("/projects/?r=my-regex"),
get200OK("/projects/?has-acl-for=" + SystemGroupBackend.ANONYMOUS_USERS.get()),
// ===========================
// === Unsupported options ===
// ===========================
get400BadRequest("/projects/?unknown", "\"--unknown\" is not a valid option"),
get400BadRequest("/projects/?unknown", "\"--unknown\" is not a valid option"),
get400BadRequest(
"/projects/?format=UNKNOWN", "\"UNKNOWN\" is not a valid value for \"--format\""),
get400BadRequest("/projects/?tree=UNKNOWN", "invalid boolean \"tree=UNKNOWN\""),
get400BadRequest("/projects/?t=UNKNOWN", "invalid boolean \"t=UNKNOWN\""),
get400BadRequest(
"/projects/?type=UNKNOWN", "\"UNKNOWN\" is not a valid value for \"--type\""),
get400BadRequest(
"/projects/?description=UNKNOWN", "invalid boolean \"description=UNKNOWN\""),
get400BadRequest("/projects/?d=UNKNOWN", "invalid boolean \"d=UNKNOWN\""),
get400BadRequest("/projects/?all=UNKNOWN", "invalid boolean \"all=UNKNOWN\""),
get400BadRequest(
"/projects/?state=UNKNOWN", "\"UNKNOWN\" is not a valid value for \"--state\""),
get400BadRequest("/projects/?n=UNKNOWN", "\"UNKNOWN\" is not a valid value for \"-n\""),
get400BadRequest(
"/projects/?start=UNKNOWN", "\"UNKNOWN\" is not a valid value for \"--start\""),
get400BadRequest("/projects/?S=UNKNOWN", "\"UNKNOWN\" is not a valid value for \"-S\""),
get400BadRequest("/projects/?has-acl-for=UNKNOWN", "Group \"UNKNOWN\" does not exist"));
private static RestCall get200OK(String uriFormat) {
return RestCall.builder(GET, uriFormat).expectedResponseCode(SC_OK).build();
}
private static RestCall get400BadRequest(String uriFormat, String expectedMessage) {
return RestCall.builder(GET, uriFormat)
.expectedResponseCode(SC_BAD_REQUEST)
.expectedMessage(expectedMessage)
.build();
}
@Test
public void listProjectsWithOptions() throws Exception {
RestApiCallHelper.execute(adminRestSession, LIST_PROJECTS_WITH_OPTIONS);
}
}