diff --git a/modules/integration/tests-integration/tests-backend/src/test/java/org/wso2/identity/integration/test/rest/api/server/application/management/v1/model/ApplicationSharePOSTRequest.java b/modules/integration/tests-integration/tests-backend/src/test/java/org/wso2/identity/integration/test/rest/api/server/application/management/v1/model/ApplicationSharePOSTRequest.java new file mode 100644 index 00000000000..a3d369f9368 --- /dev/null +++ b/modules/integration/tests-integration/tests-backend/src/test/java/org/wso2/identity/integration/test/rest/api/server/application/management/v1/model/ApplicationSharePOSTRequest.java @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2024, WSO2 LLC. (http://www.wso2.com). + * + * WSO2 LLC. licenses this file to you 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 org.wso2.identity.integration.test.rest.api.server.application.management.v1.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +import javax.validation.Valid; + +public class ApplicationSharePOSTRequest { + + private Boolean shareWithAllChildren = false; + private List sharedOrganizations = null; + + + /** + **/ + public ApplicationSharePOSTRequest shareWithAllChildren(Boolean shareWithAllChildren) { + + this.shareWithAllChildren = shareWithAllChildren; + return this; + } + + @ApiModelProperty(value = "") + @JsonProperty("shareWithAllChildren") + @Valid + public Boolean getShareWithAllChildren() { + return shareWithAllChildren; + } + public void setShareWithAllChildren(Boolean shareWithAllChildren) { + this.shareWithAllChildren = shareWithAllChildren; + } + + /** + **/ + public ApplicationSharePOSTRequest sharedOrganizations(List sharedOrganizations) { + + this.sharedOrganizations = sharedOrganizations; + return this; + } + + @ApiModelProperty(value = "") + @JsonProperty("sharedOrganizations") + @Valid + public List getSharedOrganizations() { + return sharedOrganizations; + } + public void setSharedOrganizations(List sharedOrganizations) { + this.sharedOrganizations = sharedOrganizations; + } + + public ApplicationSharePOSTRequest addSharedOrganizationsItem(String sharedOrganizationsItem) { + if (this.sharedOrganizations == null) { + this.sharedOrganizations = new ArrayList<>(); + } + this.sharedOrganizations.add(sharedOrganizationsItem); + return this; + } + + + + @Override + public boolean equals(Object o) { + + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ApplicationSharePOSTRequest applicationSharePOSTRequest = (ApplicationSharePOSTRequest) o; + return Objects.equals(this.shareWithAllChildren, applicationSharePOSTRequest.shareWithAllChildren) && + Objects.equals(this.sharedOrganizations, applicationSharePOSTRequest.sharedOrganizations); + } + + @Override + public int hashCode() { + return Objects.hash(shareWithAllChildren, sharedOrganizations); + } + + @Override + public String toString() { + + StringBuilder sb = new StringBuilder(); + sb.append("class ApplicationSharePOSTRequest {\n"); + + sb.append(" shareWithAllChildren: ").append(toIndentedString(shareWithAllChildren)).append("\n"); + sb.append(" sharedOrganizations: ").append(toIndentedString(sharedOrganizations)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n"); + } +} + diff --git a/modules/integration/tests-integration/tests-backend/src/test/java/org/wso2/identity/integration/test/rest/api/server/organization/management/v1/OrganizationManagementSuccessTest.java b/modules/integration/tests-integration/tests-backend/src/test/java/org/wso2/identity/integration/test/rest/api/server/organization/management/v1/OrganizationManagementSuccessTest.java index 55843cb7bc9..723354e196d 100644 --- a/modules/integration/tests-integration/tests-backend/src/test/java/org/wso2/identity/integration/test/rest/api/server/organization/management/v1/OrganizationManagementSuccessTest.java +++ b/modules/integration/tests-integration/tests-backend/src/test/java/org/wso2/identity/integration/test/rest/api/server/organization/management/v1/OrganizationManagementSuccessTest.java @@ -61,6 +61,7 @@ import org.wso2.identity.integration.test.rest.api.server.application.management.v1.model.ApplicationListItem; import org.wso2.identity.integration.test.rest.api.server.application.management.v1.model.ApplicationModel; import org.wso2.identity.integration.test.rest.api.server.application.management.v1.model.ApplicationPatchModel; +import org.wso2.identity.integration.test.rest.api.server.application.management.v1.model.ApplicationSharePOSTRequest; import org.wso2.identity.integration.test.rest.api.server.application.management.v1.model.AssociatedRolesConfig; import org.wso2.identity.integration.test.rest.api.server.application.management.v1.model.InboundProtocols; import org.wso2.identity.integration.test.rest.api.server.application.management.v1.model.OpenIDConnectConfiguration; @@ -232,6 +233,11 @@ public void testGetOrganization() { @Test(dependsOnMethods = "testSelfOnboardOrganization") public void switchM2MToken() throws IOException, ParseException { + ApplicationSharePOSTRequest applicationSharePOSTRequest = new ApplicationSharePOSTRequest(); + applicationSharePOSTRequest.setShareWithAllChildren(false); + applicationSharePOSTRequest.setSharedOrganizations(Collections.singletonList(organizationID)); + oAuth2RestClient.shareApplication(selfServiceAppId, applicationSharePOSTRequest); + List urlParameters = new ArrayList<>(); urlParameters.add(new BasicNameValuePair(OAuth2Constant.GRANT_TYPE_NAME, "organization_switch_cc")); urlParameters.add(new BasicNameValuePair("token", m2mToken)); diff --git a/modules/integration/tests-integration/tests-backend/src/test/java/org/wso2/identity/integration/test/restclients/OAuth2RestClient.java b/modules/integration/tests-integration/tests-backend/src/test/java/org/wso2/identity/integration/test/restclients/OAuth2RestClient.java index e9c21637916..fa2e126f805 100644 --- a/modules/integration/tests-integration/tests-backend/src/test/java/org/wso2/identity/integration/test/restclients/OAuth2RestClient.java +++ b/modules/integration/tests-integration/tests-backend/src/test/java/org/wso2/identity/integration/test/restclients/OAuth2RestClient.java @@ -41,6 +41,7 @@ import org.wso2.identity.integration.test.rest.api.server.application.management.v1.model.ApplicationModel; import org.wso2.identity.integration.test.rest.api.server.application.management.v1.model.ApplicationPatchModel; import org.wso2.identity.integration.test.rest.api.server.application.management.v1.model.ApplicationResponseModel; +import org.wso2.identity.integration.test.rest.api.server.application.management.v1.model.ApplicationSharePOSTRequest; import org.wso2.identity.integration.test.rest.api.server.application.management.v1.model.AuthorizedAPICreationModel; import org.wso2.identity.integration.test.rest.api.server.application.management.v1.model.OpenIDConnectConfiguration; import org.wso2.identity.integration.test.rest.api.server.application.management.v1.model.SAML2ServiceProvider; @@ -406,6 +407,24 @@ private String buildRoleSearchEndpoint(String roleName, String audienceType, Str return filter.toString(); } + /** + * Share the application with the organizations. + * + * @param appId The application ID. + * @param applicationSharePOSTRequest The application sharing details. + * @throws IOException Error when sharing the application. + */ + public void shareApplication(String appId, ApplicationSharePOSTRequest applicationSharePOSTRequest) throws + IOException { + + String jsonRequest = toJSONString(applicationSharePOSTRequest); + try (CloseableHttpResponse response = getResponseOfHttpPost(applicationManagementApiBasePath + + PATH_SEPARATOR + appId + PATH_SEPARATOR + "share", jsonRequest, getHeaders())) { + Assert.assertEquals(response.getStatusLine().getStatusCode(), HttpServletResponse.SC_OK, + "Application sharing failed"); + } + } + /** * Close the HTTP client */ diff --git a/pom.xml b/pom.xml index 901b79a618c..d4329d2cff1 100755 --- a/pom.xml +++ b/pom.xml @@ -2365,7 +2365,7 @@ 2.0.13 1.3.30 - 1.2.148 + 1.2.151 5.5.9 5.5.7