diff --git a/src/main/java/io/seqera/tower/cli/commands/organizations/UpdateCmd.java b/src/main/java/io/seqera/tower/cli/commands/organizations/UpdateCmd.java index 8afff2a3..ceb59956 100644 --- a/src/main/java/io/seqera/tower/cli/commands/organizations/UpdateCmd.java +++ b/src/main/java/io/seqera/tower/cli/commands/organizations/UpdateCmd.java @@ -30,6 +30,9 @@ public class UpdateCmd extends AbstractOrganizationsCmd { @CommandLine.Mixin OrganizationRefOptions organizationRefOptions; + @CommandLine.Option(names = {"--new-name"}, description = "Organization new name.") + public String newName; + @CommandLine.Option(names = {"-f", "--full-name"}, description = "Organization full name.") public String fullName; @@ -43,6 +46,7 @@ protected Response exec() throws ApiException, IOException { OrganizationDbDto organization = response.getOrganization(); UpdateOrganizationRequest request = new UpdateOrganizationRequest(); + request.setName(newName != null ? newName : organization.getName()); request.setFullName(fullName != null ? fullName : organization.getFullName()); request.setDescription(opts.description != null ? opts.description : organization.getDescription()); request.setLocation(opts.location != null ? opts.location : organization.getLocation()); diff --git a/src/test/java/io/seqera/tower/cli/organizations/OrganizationsCmdTest.java b/src/test/java/io/seqera/tower/cli/organizations/OrganizationsCmdTest.java index a9725892..1d8a28ed 100644 --- a/src/test/java/io/seqera/tower/cli/organizations/OrganizationsCmdTest.java +++ b/src/test/java/io/seqera/tower/cli/organizations/OrganizationsCmdTest.java @@ -27,6 +27,7 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; import org.mockserver.client.MockServerClient; +import org.mockserver.model.JsonBody; import org.mockserver.model.MediaType; import java.util.Arrays; @@ -38,6 +39,7 @@ import static org.mockserver.matchers.Times.exactly; import static org.mockserver.model.HttpRequest.request; import static org.mockserver.model.HttpResponse.response; +import static org.mockserver.model.JsonBody.json; class OrganizationsCmdTest extends BaseCmdTest { @@ -295,6 +297,40 @@ void testUpdate(OutputType format, MockServerClient mock) { assertOutput(format, out, new OrganizationsUpdated(27736513644467L, "organization1")); } + @ParameterizedTest + @EnumSource(OutputType.class) + void testUpdateName(OutputType format, MockServerClient mock) { + mock.reset(); + mock.when( + request().withMethod("GET").withPath("/user-info"), exactly(1) + ).respond( + response().withStatusCode(200).withBody(loadResource("user")).withContentType(MediaType.APPLICATION_JSON) + ); + + mock.when( + request().withMethod("GET").withPath("/user/1264/workspaces"), exactly(1) + ).respond( + response().withStatusCode(200).withBody(loadResource("workspaces/workspaces_list")).withContentType(MediaType.APPLICATION_JSON) + ); + + mock.when( + request().withMethod("GET").withPath("/orgs/27736513644467"), exactly(1) + ).respond( + response().withStatusCode(200).withBody(loadResource("organizations/organizations_view")).withContentType(MediaType.APPLICATION_JSON) + ); + + mock.when( + request().withMethod("PUT").withPath("/orgs/27736513644467") + .withBody(json("{\"name\":\"organization2\",\"fullName\":\"sample organization\"}")), + exactly(1) + ).respond( + response().withStatusCode(204) + ); + + ExecOut out = exec(format, mock, "organizations", "update", "-n", "organization1", "--new-name", "organization2", "-f", "sample organization"); + assertOutput(format, out, new OrganizationsUpdated(27736513644467L, "organization1")); + } + @Test void testUpdateError(MockServerClient mock) { mock.reset();