forked from community/device-mgt-core
commit
f94e2525d6
@ -0,0 +1,100 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. 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.carbon.apimgt.webapp.publisher;
|
||||||
|
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.testng.annotations.BeforeTest;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
import org.wso2.carbon.apimgt.integration.client.OAuthRequestInterceptor;
|
||||||
|
import org.wso2.carbon.apimgt.integration.client.model.OAuthApplication;
|
||||||
|
import org.wso2.carbon.apimgt.webapp.publisher.dto.ApiScope;
|
||||||
|
import org.wso2.carbon.apimgt.webapp.publisher.dto.ApiUriTemplate;
|
||||||
|
import org.wso2.carbon.apimgt.webapp.publisher.exception.APIManagerPublisherException;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is the test class for {@link APIPublisherServiceImpl}
|
||||||
|
*/
|
||||||
|
public class
|
||||||
|
APIPublisherServiceTest extends BaseAPIPublisherTest {
|
||||||
|
private static final Log log = LogFactory.getLog(APIPublisherServiceTest.class);
|
||||||
|
private APIPublisherServiceImpl apiPublisherService = new APIPublisherServiceImpl();
|
||||||
|
private APIConfig apiConfig = new APIConfig();
|
||||||
|
|
||||||
|
@BeforeTest
|
||||||
|
public void initialConfigs() throws Exception {
|
||||||
|
setApiConfigs(apiConfig);
|
||||||
|
initializeOAuthApplication();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(description = "Publishes an API | will fail if there are any exceptions")
|
||||||
|
public void publishAPI() throws NoSuchFieldException, IllegalAccessException,
|
||||||
|
APIManagerPublisherException {
|
||||||
|
apiPublisherService.publishAPI(apiConfig);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setApiConfigs(APIConfig apiConfig) {
|
||||||
|
apiConfig.setName("Windows Device Management Administrative Service");
|
||||||
|
apiConfig.setContext("/api/device-mgt/windows/v1.0/admin/devices");
|
||||||
|
apiConfig.setOwner("admin");
|
||||||
|
apiConfig.setEndpoint("https://localhost:9443/api/device-mgt/windows/v1.0/admin/devices");
|
||||||
|
apiConfig.setVersion("1.0.0");
|
||||||
|
apiConfig.setTransports("http,https");
|
||||||
|
apiConfig.setPolicy(null);
|
||||||
|
apiConfig.setSharedWithAllTenants(true);
|
||||||
|
apiConfig.setTags(new String[]{"windows", "device_management"});
|
||||||
|
apiConfig.setTenantDomain("carbon.super");
|
||||||
|
apiConfig.setSecured(false);
|
||||||
|
Map<String, ApiScope> apiScopes = new HashMap<>();
|
||||||
|
Set<ApiScope> scopes = new HashSet<>(apiScopes.values());
|
||||||
|
apiConfig.setScopes(scopes);
|
||||||
|
setAPIURITemplates(apiConfig);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setAPIURITemplates(APIConfig apiConfig) {
|
||||||
|
Set<ApiUriTemplate> uriTemplates = new LinkedHashSet<>();
|
||||||
|
ApiUriTemplate template = new ApiUriTemplate();
|
||||||
|
template.setAuthType("Application & Application User");
|
||||||
|
template.setHttpVerb("POST");
|
||||||
|
template.setResourceURI("https://localhost:9443/api/device-mgt/windows/v1.0/admin/devices/reboot");
|
||||||
|
template.setUriTemplate("/reboot");
|
||||||
|
ApiScope scope = new ApiScope();
|
||||||
|
scope.setKey("perm:windows:reboot");
|
||||||
|
scope.setName("Reboot");
|
||||||
|
scope.setRoles("/permission/admin/device-mgt/devices/owning-device/operations/windows/reboot");
|
||||||
|
scope.setDescription("Lock reset on Windows devices");
|
||||||
|
template.setScope(scope);
|
||||||
|
uriTemplates.add(template);
|
||||||
|
apiConfig.setUriTemplates(uriTemplates);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initializeOAuthApplication() throws NoSuchFieldException, IllegalAccessException {
|
||||||
|
OAuthApplication oAuthApplication = new OAuthApplication();
|
||||||
|
oAuthApplication.setClientName("admin_api_integration_client");
|
||||||
|
oAuthApplication.setIsSaasApplication("true");
|
||||||
|
oAuthApplication.setClientId("random");
|
||||||
|
oAuthApplication.setClientSecret("random=");
|
||||||
|
Field oAuth = OAuthRequestInterceptor.class.getDeclaredField("oAuthApplication");
|
||||||
|
oAuth.setAccessible(true);
|
||||||
|
oAuth.set(null, oAuthApplication);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,125 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. 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.carbon.apimgt.webapp.publisher;
|
||||||
|
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
import org.testng.annotations.BeforeSuite;
|
||||||
|
import org.wso2.carbon.apimgt.integration.client.IntegrationClientServiceImpl;
|
||||||
|
import org.wso2.carbon.apimgt.integration.client.internal.APIIntegrationClientDataHolder;
|
||||||
|
import org.wso2.carbon.apimgt.integration.client.publisher.PublisherClient;
|
||||||
|
import org.wso2.carbon.apimgt.integration.client.service.IntegrationClientService;
|
||||||
|
import org.wso2.carbon.apimgt.integration.generated.client.publisher.api.APIsApi;
|
||||||
|
import org.wso2.carbon.apimgt.webapp.publisher.internal.APIPublisherDataHolder;
|
||||||
|
import org.wso2.carbon.apimgt.webapp.publisher.utils.Api;
|
||||||
|
import org.wso2.carbon.base.MultitenantConstants;
|
||||||
|
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
|
import org.wso2.carbon.context.internal.OSGiDataHolder;
|
||||||
|
import org.wso2.carbon.identity.jwt.client.extension.JWTClient;
|
||||||
|
import org.wso2.carbon.identity.jwt.client.extension.dto.AccessTokenInfo;
|
||||||
|
import org.wso2.carbon.identity.jwt.client.extension.exception.JWTClientException;
|
||||||
|
import org.wso2.carbon.identity.jwt.client.extension.internal.JWTClientExtensionDataHolder;
|
||||||
|
import org.wso2.carbon.identity.jwt.client.extension.service.JWTClientManagerService;
|
||||||
|
import org.wso2.carbon.identity.jwt.client.extension.service.JWTClientManagerServiceImpl;
|
||||||
|
import org.wso2.carbon.registry.core.config.RegistryContext;
|
||||||
|
import org.wso2.carbon.registry.core.exceptions.RegistryException;
|
||||||
|
import org.wso2.carbon.registry.core.internal.RegistryDataHolder;
|
||||||
|
import org.wso2.carbon.registry.core.jdbc.realm.InMemoryRealmService;
|
||||||
|
import org.wso2.carbon.registry.core.service.RegistryService;
|
||||||
|
import org.wso2.carbon.user.api.UserStoreException;
|
||||||
|
import org.wso2.carbon.user.core.service.RealmService;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.net.URL;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base class which initializes carbonContext and needed services.
|
||||||
|
*/
|
||||||
|
public abstract class BaseAPIPublisherTest {
|
||||||
|
|
||||||
|
private static final Log log = LogFactory.getLog(BaseAPIPublisherTest.class);
|
||||||
|
|
||||||
|
@BeforeSuite
|
||||||
|
public void initialize() throws Exception {
|
||||||
|
this.initializeCarbonContext();
|
||||||
|
this.initServices();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initializeCarbonContext() throws RegistryException {
|
||||||
|
ClassLoader classLoader = getClass().getClassLoader();
|
||||||
|
URL resourceUrl = classLoader.getResource("carbon-home");
|
||||||
|
if (resourceUrl != null) {
|
||||||
|
File carbonHome = new File(resourceUrl.getFile());
|
||||||
|
System.setProperty("carbon.home", carbonHome.getAbsolutePath());
|
||||||
|
}
|
||||||
|
PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(MultitenantConstants.
|
||||||
|
SUPER_TENANT_DOMAIN_NAME);
|
||||||
|
PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(MultitenantConstants.SUPER_TENANT_ID);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initServices() throws NoSuchFieldException, IllegalAccessException,
|
||||||
|
JWTClientException, UserStoreException, RegistryException {
|
||||||
|
|
||||||
|
IntegrationClientService integrationClientService = Mockito.mock(IntegrationClientServiceImpl.class,
|
||||||
|
Mockito.CALLS_REAL_METHODS);
|
||||||
|
APIPublisherDataHolder.getInstance().setIntegrationClientService(integrationClientService);
|
||||||
|
PublisherClient publisherClient = Mockito.mock(PublisherClient.class, Mockito.CALLS_REAL_METHODS);
|
||||||
|
doReturn(publisherClient).when(integrationClientService).getPublisherClient();
|
||||||
|
|
||||||
|
APIsApi api = new Api();
|
||||||
|
Field field = PublisherClient.class.getDeclaredField("api");
|
||||||
|
field.setAccessible(true);
|
||||||
|
field.set(publisherClient, api);
|
||||||
|
|
||||||
|
AccessTokenInfo accessTokenInfo = new AccessTokenInfo();
|
||||||
|
final String REQUIRED_SCOPE =
|
||||||
|
"apim:api_create apim:api_view apim:api_publish apim:subscribe apim:tier_view apim:tier_manage " +
|
||||||
|
"apim:subscription_view apim:subscription_block";
|
||||||
|
accessTokenInfo.setScopes(REQUIRED_SCOPE);
|
||||||
|
|
||||||
|
JWTClientManagerService jwtClientManagerService = Mockito.mock(JWTClientManagerServiceImpl.class,
|
||||||
|
Mockito.CALLS_REAL_METHODS);
|
||||||
|
JWTClient jwtClient = Mockito.mock(JWTClient.class, Mockito.CALLS_REAL_METHODS);
|
||||||
|
doReturn(accessTokenInfo).when(jwtClient).getAccessToken(Mockito.anyString(), Mockito.anyString(),
|
||||||
|
Mockito.anyString(), Mockito.anyString());
|
||||||
|
doReturn(jwtClient).when(jwtClientManagerService).getJWTClient();
|
||||||
|
|
||||||
|
APIIntegrationClientDataHolder.getInstance().setJwtClientManagerService(jwtClientManagerService);
|
||||||
|
RegistryService registryService = this.getRegistryService();
|
||||||
|
OSGiDataHolder.getInstance().setRegistryService(registryService);
|
||||||
|
JWTClientExtensionDataHolder.getInstance().setRegistryService(registryService);
|
||||||
|
}
|
||||||
|
|
||||||
|
private RegistryService getRegistryService() throws RegistryException, UserStoreException {
|
||||||
|
RealmService realmService = new InMemoryRealmService();
|
||||||
|
APIPublisherDataHolder.getInstance().setRealmService(realmService);
|
||||||
|
RegistryDataHolder.getInstance().setRealmService(realmService);
|
||||||
|
JWTClientExtensionDataHolder.getInstance().setRealmService(realmService);
|
||||||
|
InputStream is = this.getClass().getClassLoader().getResourceAsStream("carbon-home/repository/" +
|
||||||
|
"conf/registry.xml");
|
||||||
|
RegistryContext context = RegistryContext.getBaseInstance(is, realmService);
|
||||||
|
context.setSetup(true);
|
||||||
|
return context.getEmbeddedRegistryService();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,86 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. 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.carbon.apimgt.webapp.publisher.utils;
|
||||||
|
|
||||||
|
import org.wso2.carbon.apimgt.integration.generated.client.publisher.api.APIsApi;
|
||||||
|
import org.wso2.carbon.apimgt.integration.generated.client.publisher.model.API;
|
||||||
|
import org.wso2.carbon.apimgt.integration.generated.client.publisher.model.APIList;
|
||||||
|
import org.wso2.carbon.apimgt.integration.generated.client.publisher.model.FileInfo;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class to create Api for testing.
|
||||||
|
*/
|
||||||
|
public class Api implements APIsApi {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void apisApiIdDelete(String apiId, String ifMatch, String ifUnmodifiedSince) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public API apisApiIdGet(String apiId, String accept, String ifNoneMatch, String ifModifiedSince) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public API apisApiIdPut(String apiId, API body, String contentType, String ifMatch, String ifUnmodifiedSince) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void apisApiIdSwaggerGet(String apiId, String accept, String ifNoneMatch, String ifModifiedSince) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void apisApiIdSwaggerPut(String apiId, String apiDefinition, String contentType, String ifMatch, String ifUnmodifiedSince) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void apisApiIdThumbnailGet(String apiId, String accept, String ifNoneMatch, String ifModifiedSince) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FileInfo apisApiIdThumbnailPost(String apiId, File file, String contentType, String ifMatch, String ifUnmodifiedSince) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void apisChangeLifecyclePost(String action, String apiId, String lifecycleChecklist, String ifMatch, String ifUnmodifiedSince) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void apisCopyApiPost(String newVersion, String apiId) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public APIList apisGet(Integer limit, Integer offset, String query, String accept, String ifNoneMatch) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public API apisPost(API body, String contentType) {
|
||||||
|
return new API();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,429 @@
|
|||||||
|
CREATE TABLE IF NOT EXISTS REG_CLUSTER_LOCK (
|
||||||
|
REG_LOCK_NAME VARCHAR (20),
|
||||||
|
REG_LOCK_STATUS VARCHAR (20),
|
||||||
|
REG_LOCKED_TIME TIMESTAMP,
|
||||||
|
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY (REG_LOCK_NAME)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS REG_LOG (
|
||||||
|
REG_LOG_ID INTEGER AUTO_INCREMENT,
|
||||||
|
REG_PATH VARCHAR (2000),
|
||||||
|
REG_USER_ID VARCHAR (31) NOT NULL,
|
||||||
|
REG_LOGGED_TIME TIMESTAMP NOT NULL,
|
||||||
|
REG_ACTION INTEGER NOT NULL,
|
||||||
|
REG_ACTION_DATA VARCHAR (500),
|
||||||
|
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY (REG_LOG_ID, REG_TENANT_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS REG_LOG_IND_BY_REG_LOGTIME ON REG_LOG(REG_LOGGED_TIME, REG_TENANT_ID);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS REG_PATH(
|
||||||
|
REG_PATH_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
REG_PATH_VALUE VARCHAR(2000) NOT NULL,
|
||||||
|
REG_PATH_PARENT_ID INT,
|
||||||
|
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
CONSTRAINT PK_REG_PATH PRIMARY KEY(REG_PATH_ID, REG_TENANT_ID)
|
||||||
|
);
|
||||||
|
CREATE INDEX IF NOT EXISTS REG_PATH_IND_BY_NAME ON REG_PATH(REG_PATH_VALUE, REG_TENANT_ID);
|
||||||
|
CREATE INDEX IF NOT EXISTS REG_PATH_IND_BY_PARENT_ID ON REG_PATH(REG_PATH_PARENT_ID, REG_TENANT_ID);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS REG_CONTENT (
|
||||||
|
REG_CONTENT_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
REG_CONTENT_DATA LONGBLOB,
|
||||||
|
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
CONSTRAINT PK_REG_CONTENT PRIMARY KEY(REG_CONTENT_ID, REG_TENANT_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS REG_CONTENT_HISTORY (
|
||||||
|
REG_CONTENT_ID INTEGER NOT NULL,
|
||||||
|
REG_CONTENT_DATA LONGBLOB,
|
||||||
|
REG_DELETED SMALLINT,
|
||||||
|
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
CONSTRAINT PK_REG_CONTENT_HISTORY PRIMARY KEY(REG_CONTENT_ID, REG_TENANT_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS REG_RESOURCE (
|
||||||
|
REG_PATH_ID INTEGER NOT NULL,
|
||||||
|
REG_NAME VARCHAR(256),
|
||||||
|
REG_VERSION INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
REG_MEDIA_TYPE VARCHAR(500),
|
||||||
|
REG_CREATOR VARCHAR(31) NOT NULL,
|
||||||
|
REG_CREATED_TIME TIMESTAMP NOT NULL,
|
||||||
|
REG_LAST_UPDATOR VARCHAR(31),
|
||||||
|
REG_LAST_UPDATED_TIME TIMESTAMP NOT NULL,
|
||||||
|
REG_DESCRIPTION VARCHAR(1000),
|
||||||
|
REG_CONTENT_ID INTEGER,
|
||||||
|
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
REG_UUID VARCHAR(100) NOT NULL,
|
||||||
|
CONSTRAINT PK_REG_RESOURCE PRIMARY KEY(REG_VERSION, REG_TENANT_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE REG_RESOURCE ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_FK_BY_PATH_ID FOREIGN KEY (REG_PATH_ID, REG_TENANT_ID) REFERENCES REG_PATH (REG_PATH_ID, REG_TENANT_ID);
|
||||||
|
ALTER TABLE REG_RESOURCE ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_FK_BY_CONTENT_ID FOREIGN KEY (REG_CONTENT_ID, REG_TENANT_ID) REFERENCES REG_CONTENT (REG_CONTENT_ID, REG_TENANT_ID);
|
||||||
|
CREATE INDEX IF NOT EXISTS REG_RESOURCE_IND_BY_NAME ON REG_RESOURCE(REG_NAME, REG_TENANT_ID);
|
||||||
|
CREATE INDEX IF NOT EXISTS REG_RESOURCE_IND_BY_PATH_ID_NAME ON REG_RESOURCE(REG_PATH_ID, REG_NAME, REG_TENANT_ID);
|
||||||
|
CREATE INDEX IF NOT EXISTS REG_RESOURCE_IND_BY_UUID ON REG_RESOURCE(REG_UUID);
|
||||||
|
CREATE INDEX IF NOT EXISTS REG_RESOURCE_IND_BY_TENANT ON REG_RESOURCE(REG_TENANT_ID, REG_UUID);
|
||||||
|
CREATE INDEX IF NOT EXISTS REG_RESOURCE_IND_BY_TYPE ON REG_RESOURCE(REG_TENANT_ID, REG_MEDIA_TYPE);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS REG_RESOURCE_HISTORY (
|
||||||
|
REG_PATH_ID INTEGER NOT NULL,
|
||||||
|
REG_NAME VARCHAR(256),
|
||||||
|
REG_VERSION INTEGER NOT NULL,
|
||||||
|
REG_MEDIA_TYPE VARCHAR(500),
|
||||||
|
REG_CREATOR VARCHAR(31) NOT NULL,
|
||||||
|
REG_CREATED_TIME TIMESTAMP NOT NULL,
|
||||||
|
REG_LAST_UPDATOR VARCHAR(31),
|
||||||
|
REG_LAST_UPDATED_TIME TIMESTAMP NOT NULL,
|
||||||
|
REG_DESCRIPTION VARCHAR(1000),
|
||||||
|
REG_CONTENT_ID INTEGER,
|
||||||
|
REG_DELETED SMALLINT,
|
||||||
|
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
REG_UUID VARCHAR(100) NOT NULL,
|
||||||
|
CONSTRAINT PK_REG_RESOURCE_HISTORY PRIMARY KEY(REG_VERSION, REG_TENANT_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE REG_RESOURCE_HISTORY ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_HIST_FK_BY_PATHID FOREIGN KEY (REG_PATH_ID, REG_TENANT_ID) REFERENCES REG_PATH (REG_PATH_ID, REG_TENANT_ID);
|
||||||
|
ALTER TABLE REG_RESOURCE_HISTORY ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_HIST_FK_BY_CONTENT_ID FOREIGN KEY (REG_CONTENT_ID, REG_TENANT_ID) REFERENCES REG_CONTENT_HISTORY (REG_CONTENT_ID, REG_TENANT_ID);
|
||||||
|
CREATE INDEX IF NOT EXISTS REG_RESOURCE_HISTORY_IND_BY_NAME ON REG_RESOURCE_HISTORY(REG_NAME, REG_TENANT_ID);
|
||||||
|
CREATE INDEX IF NOT EXISTS REG_RESOURCE_HISTORY_IND_BY_PATH_ID_NAME ON REG_RESOURCE(REG_PATH_ID, REG_NAME, REG_TENANT_ID);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS REG_COMMENT (
|
||||||
|
REG_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
REG_COMMENT_TEXT VARCHAR(500) NOT NULL,
|
||||||
|
REG_USER_ID VARCHAR(31) NOT NULL,
|
||||||
|
REG_COMMENTED_TIME TIMESTAMP NOT NULL,
|
||||||
|
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
CONSTRAINT PK_REG_COMMENT PRIMARY KEY(REG_ID, REG_TENANT_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS REG_RESOURCE_COMMENT (
|
||||||
|
REG_COMMENT_ID INTEGER NOT NULL,
|
||||||
|
REG_VERSION INTEGER,
|
||||||
|
REG_PATH_ID INTEGER,
|
||||||
|
REG_RESOURCE_NAME VARCHAR(256),
|
||||||
|
REG_TENANT_ID INTEGER DEFAULT 0
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE REG_RESOURCE_COMMENT ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_COMMENT_FK_BY_PATH_ID FOREIGN KEY (REG_PATH_ID, REG_TENANT_ID) REFERENCES REG_PATH (REG_PATH_ID, REG_TENANT_ID);
|
||||||
|
ALTER TABLE REG_RESOURCE_COMMENT ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_COMMENT_FK_BY_COMMENT_ID FOREIGN KEY (REG_COMMENT_ID, REG_TENANT_ID) REFERENCES REG_COMMENT (REG_ID, REG_TENANT_ID);
|
||||||
|
CREATE INDEX IF NOT EXISTS REG_RESOURCE_COMMENT_IND_BY_PATH_ID_AND_RESOURCE_NAME ON REG_RESOURCE_COMMENT(REG_PATH_ID, REG_RESOURCE_NAME, REG_TENANT_ID);
|
||||||
|
CREATE INDEX IF NOT EXISTS REG_RESOURCE_COMMENT_IND_BY_VERSION ON REG_RESOURCE_COMMENT(REG_VERSION, REG_TENANT_ID);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS REG_RATING (
|
||||||
|
REG_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
REG_RATING INTEGER NOT NULL,
|
||||||
|
REG_USER_ID VARCHAR(31) NOT NULL,
|
||||||
|
REG_RATED_TIME TIMESTAMP NOT NULL,
|
||||||
|
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
CONSTRAINT PK_REG_RATING PRIMARY KEY(REG_ID, REG_TENANT_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS REG_RESOURCE_RATING (
|
||||||
|
REG_RATING_ID INTEGER NOT NULL,
|
||||||
|
REG_VERSION INTEGER,
|
||||||
|
REG_PATH_ID INTEGER,
|
||||||
|
REG_RESOURCE_NAME VARCHAR(256),
|
||||||
|
REG_TENANT_ID INTEGER DEFAULT 0
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE REG_RESOURCE_RATING ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_RATING_FK_BY_PATH_ID FOREIGN KEY (REG_PATH_ID, REG_TENANT_ID) REFERENCES REG_PATH (REG_PATH_ID, REG_TENANT_ID);
|
||||||
|
ALTER TABLE REG_RESOURCE_RATING ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_RATING_FK_BY_RATING_ID FOREIGN KEY (REG_RATING_ID, REG_TENANT_ID) REFERENCES REG_RATING (REG_ID, REG_TENANT_ID);
|
||||||
|
CREATE INDEX IF NOT EXISTS REG_RESOURCE_RATING_IND_BY_PATH_ID_AND_RESOURCE_NAME ON REG_RESOURCE_RATING(REG_PATH_ID, REG_RESOURCE_NAME, REG_TENANT_ID);
|
||||||
|
CREATE INDEX IF NOT EXISTS REG_RESOURCE_RATING_IND_BY_VERSION ON REG_RESOURCE_RATING(REG_VERSION, REG_TENANT_ID);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS REG_TAG (
|
||||||
|
REG_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
REG_TAG_NAME VARCHAR(500) NOT NULL,
|
||||||
|
REG_USER_ID VARCHAR(31) NOT NULL,
|
||||||
|
REG_TAGGED_TIME TIMESTAMP NOT NULL,
|
||||||
|
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
CONSTRAINT PK_REG_TAG PRIMARY KEY(REG_ID, REG_TENANT_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS REG_RESOURCE_TAG (
|
||||||
|
REG_TAG_ID INTEGER NOT NULL,
|
||||||
|
REG_VERSION INTEGER,
|
||||||
|
REG_PATH_ID INTEGER,
|
||||||
|
REG_RESOURCE_NAME VARCHAR(256),
|
||||||
|
REG_TENANT_ID INTEGER DEFAULT 0
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE REG_RESOURCE_TAG ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_TAG_FK_BY_PATH_ID FOREIGN KEY (REG_PATH_ID, REG_TENANT_ID) REFERENCES REG_PATH (REG_PATH_ID, REG_TENANT_ID);
|
||||||
|
ALTER TABLE REG_RESOURCE_TAG ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_TAG_FK_BY_TAG_ID FOREIGN KEY (REG_TAG_ID, REG_TENANT_ID) REFERENCES REG_TAG (REG_ID, REG_TENANT_ID);
|
||||||
|
CREATE INDEX IF NOT EXISTS REG_RESOURCE_TAG_IND_BY_PATH_ID_AND_RESOURCE_NAME ON REG_RESOURCE_TAG(REG_PATH_ID, REG_RESOURCE_NAME, REG_TENANT_ID);
|
||||||
|
CREATE INDEX IF NOT EXISTS REG_RESOURCE_TAG_IND_BY_VERSION ON REG_RESOURCE_TAG(REG_VERSION, REG_TENANT_ID);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS REG_PROPERTY (
|
||||||
|
REG_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
REG_NAME VARCHAR(100) NOT NULL,
|
||||||
|
REG_VALUE VARCHAR(1000),
|
||||||
|
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
CONSTRAINT PK_REG_PROPERTY PRIMARY KEY(REG_ID, REG_TENANT_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS REG_RESOURCE_PROPERTY (
|
||||||
|
REG_PROPERTY_ID INTEGER NOT NULL,
|
||||||
|
REG_VERSION INTEGER,
|
||||||
|
REG_PATH_ID INTEGER,
|
||||||
|
REG_RESOURCE_NAME VARCHAR(256),
|
||||||
|
REG_TENANT_ID INTEGER DEFAULT 0
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE REG_RESOURCE_PROPERTY ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_PROPERTY_FK_BY_PATH_ID FOREIGN KEY (REG_PATH_ID, REG_TENANT_ID) REFERENCES REG_PATH (REG_PATH_ID, REG_TENANT_ID);
|
||||||
|
ALTER TABLE REG_RESOURCE_PROPERTY ADD CONSTRAINT IF NOT EXISTS REG_RESOURCE_PROPERTY_FK_BY_TAG_ID FOREIGN KEY (REG_PROPERTY_ID, REG_TENANT_ID) REFERENCES REG_PROPERTY (REG_ID, REG_TENANT_ID);
|
||||||
|
CREATE INDEX IF NOT EXISTS REG_RESOURCE_PROPERTY_IND_BY_PATH_ID_AND_RESOURCE_NAME ON REG_RESOURCE_PROPERTY(REG_PATH_ID, REG_RESOURCE_NAME, REG_TENANT_ID);
|
||||||
|
CREATE INDEX IF NOT EXISTS REG_RESOURCE_PROPERTY_IND_BY_VERSION ON REG_RESOURCE_PROPERTY(REG_VERSION, REG_TENANT_ID);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS REG_ASSOCIATION (
|
||||||
|
REG_ASSOCIATION_ID INTEGER AUTO_INCREMENT,
|
||||||
|
REG_SOURCEPATH VARCHAR (2000) NOT NULL,
|
||||||
|
REG_TARGETPATH VARCHAR (2000) NOT NULL,
|
||||||
|
REG_ASSOCIATION_TYPE VARCHAR (2000) NOT NULL,
|
||||||
|
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY (REG_ASSOCIATION_ID, REG_TENANT_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS REG_SNAPSHOT (
|
||||||
|
REG_SNAPSHOT_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
REG_PATH_ID INTEGER NOT NULL,
|
||||||
|
REG_RESOURCE_NAME VARCHAR (256),
|
||||||
|
REG_RESOURCE_VIDS LONGBLOB NOT NULL,
|
||||||
|
REG_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
CONSTRAINT PK_REG_SNAPSHOT PRIMARY KEY(REG_SNAPSHOT_ID, REG_TENANT_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE REG_SNAPSHOT ADD CONSTRAINT IF NOT EXISTS REG_SNAPSHOT_FK_BY_PATH_ID FOREIGN KEY (REG_PATH_ID, REG_TENANT_ID) REFERENCES REG_PATH (REG_PATH_ID, REG_TENANT_ID);
|
||||||
|
CREATE INDEX IF NOT EXISTS REG_SNAPSHOT_IND_BY_PATH_ID_AND_RESOURCE_NAME ON REG_SNAPSHOT(REG_PATH_ID, REG_RESOURCE_NAME, REG_TENANT_ID);
|
||||||
|
|
||||||
|
-- ################################
|
||||||
|
-- USER MANAGER TABLES
|
||||||
|
-- ################################
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_TENANT (
|
||||||
|
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
UM_DOMAIN_NAME VARCHAR(255) NOT NULL,
|
||||||
|
UM_EMAIL VARCHAR(255),
|
||||||
|
UM_ACTIVE BOOLEAN DEFAULT FALSE,
|
||||||
|
UM_CREATED_DATE TIMESTAMP NOT NULL,
|
||||||
|
UM_USER_CONFIG LONGBLOB NOT NULL,
|
||||||
|
PRIMARY KEY (UM_ID),
|
||||||
|
UNIQUE(UM_DOMAIN_NAME));
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_DOMAIN(
|
||||||
|
UM_DOMAIN_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
UM_DOMAIN_NAME VARCHAR(255),
|
||||||
|
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY (UM_DOMAIN_ID, UM_TENANT_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS INDEX_UM_TENANT_UM_DOMAIN_NAME ON UM_TENANT (UM_DOMAIN_NAME);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_USER (
|
||||||
|
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
UM_USER_NAME VARCHAR(255) NOT NULL,
|
||||||
|
UM_USER_PASSWORD VARCHAR(255) NOT NULL,
|
||||||
|
UM_SALT_VALUE VARCHAR(31),
|
||||||
|
UM_REQUIRE_CHANGE BOOLEAN DEFAULT FALSE,
|
||||||
|
UM_CHANGED_TIME TIMESTAMP NOT NULL,
|
||||||
|
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY (UM_ID, UM_TENANT_ID),
|
||||||
|
UNIQUE(UM_USER_NAME, UM_TENANT_ID));
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_SYSTEM_USER (
|
||||||
|
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
UM_USER_NAME VARCHAR(255) NOT NULL,
|
||||||
|
UM_USER_PASSWORD VARCHAR(255) NOT NULL,
|
||||||
|
UM_SALT_VALUE VARCHAR(31),
|
||||||
|
UM_REQUIRE_CHANGE BOOLEAN DEFAULT FALSE,
|
||||||
|
UM_CHANGED_TIME TIMESTAMP NOT NULL,
|
||||||
|
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY (UM_ID, UM_TENANT_ID),
|
||||||
|
UNIQUE(UM_USER_NAME, UM_TENANT_ID));
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_USER_ATTRIBUTE (
|
||||||
|
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
UM_ATTR_NAME VARCHAR(255) NOT NULL,
|
||||||
|
UM_ATTR_VALUE VARCHAR(1024),
|
||||||
|
UM_PROFILE_ID VARCHAR(255),
|
||||||
|
UM_USER_ID INTEGER,
|
||||||
|
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY (UM_ID, UM_TENANT_ID),
|
||||||
|
FOREIGN KEY (UM_USER_ID, UM_TENANT_ID) REFERENCES UM_USER(UM_ID, UM_TENANT_ID));
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS UM_USER_ID_INDEX ON UM_USER_ATTRIBUTE(UM_USER_ID);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_ROLE (
|
||||||
|
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
UM_ROLE_NAME VARCHAR(255) NOT NULL,
|
||||||
|
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
UM_SHARED_ROLE BOOLEAN DEFAULT FALSE,
|
||||||
|
PRIMARY KEY (UM_ID, UM_TENANT_ID),
|
||||||
|
UNIQUE(UM_ROLE_NAME, UM_TENANT_ID));
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_MODULE(
|
||||||
|
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
UM_MODULE_NAME VARCHAR(100),
|
||||||
|
UNIQUE(UM_MODULE_NAME),
|
||||||
|
PRIMARY KEY(UM_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_MODULE_ACTIONS(
|
||||||
|
UM_ACTION VARCHAR(255) NOT NULL,
|
||||||
|
UM_MODULE_ID INTEGER NOT NULL,
|
||||||
|
PRIMARY KEY(UM_ACTION, UM_MODULE_ID),
|
||||||
|
FOREIGN KEY (UM_MODULE_ID) REFERENCES UM_MODULE(UM_ID) ON DELETE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_PERMISSION (
|
||||||
|
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
UM_RESOURCE_ID VARCHAR(255) NOT NULL,
|
||||||
|
UM_ACTION VARCHAR(255) NOT NULL,
|
||||||
|
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
UM_MODULE_ID INTEGER DEFAULT 0,
|
||||||
|
UNIQUE(UM_RESOURCE_ID,UM_ACTION, UM_TENANT_ID),
|
||||||
|
PRIMARY KEY (UM_ID, UM_TENANT_ID));
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS INDEX_UM_PERMISSION_UM_RESOURCE_ID_UM_ACTION ON UM_PERMISSION (UM_RESOURCE_ID, UM_ACTION, UM_TENANT_ID);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_ROLE_PERMISSION (
|
||||||
|
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
UM_PERMISSION_ID INTEGER NOT NULL,
|
||||||
|
UM_ROLE_NAME VARCHAR(255) NOT NULL,
|
||||||
|
UM_IS_ALLOWED SMALLINT NOT NULL,
|
||||||
|
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
UM_DOMAIN_ID INTEGER,
|
||||||
|
FOREIGN KEY (UM_PERMISSION_ID, UM_TENANT_ID) REFERENCES UM_PERMISSION(UM_ID, UM_TENANT_ID) ON DELETE CASCADE,
|
||||||
|
FOREIGN KEY (UM_DOMAIN_ID, UM_TENANT_ID) REFERENCES UM_DOMAIN(UM_DOMAIN_ID, UM_TENANT_ID) ON DELETE CASCADE,
|
||||||
|
PRIMARY KEY (UM_ID, UM_TENANT_ID));
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_USER_PERMISSION (
|
||||||
|
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
UM_PERMISSION_ID INTEGER NOT NULL,
|
||||||
|
UM_USER_NAME VARCHAR(255) NOT NULL,
|
||||||
|
UM_IS_ALLOWED SMALLINT NOT NULL,
|
||||||
|
UNIQUE (UM_PERMISSION_ID, UM_USER_NAME, UM_TENANT_ID),
|
||||||
|
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
FOREIGN KEY (UM_PERMISSION_ID, UM_TENANT_ID) REFERENCES UM_PERMISSION(UM_ID, UM_TENANT_ID) ON DELETE CASCADE,
|
||||||
|
PRIMARY KEY (UM_ID, UM_TENANT_ID));
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_USER_ROLE (
|
||||||
|
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
UM_ROLE_ID INTEGER NOT NULL,
|
||||||
|
UM_USER_ID INTEGER NOT NULL,
|
||||||
|
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
UNIQUE (UM_USER_ID, UM_ROLE_ID, UM_TENANT_ID),
|
||||||
|
FOREIGN KEY (UM_ROLE_ID, UM_TENANT_ID) REFERENCES UM_ROLE(UM_ID, UM_TENANT_ID),
|
||||||
|
FOREIGN KEY (UM_USER_ID, UM_TENANT_ID) REFERENCES UM_USER(UM_ID, UM_TENANT_ID),
|
||||||
|
PRIMARY KEY (UM_ID, UM_TENANT_ID));
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_SHARED_USER_ROLE(
|
||||||
|
UM_ROLE_ID INTEGER NOT NULL,
|
||||||
|
UM_USER_ID INTEGER NOT NULL,
|
||||||
|
UM_USER_TENANT_ID INTEGER NOT NULL,
|
||||||
|
UM_ROLE_TENANT_ID INTEGER NOT NULL,
|
||||||
|
UNIQUE(UM_USER_ID,UM_ROLE_ID,UM_USER_TENANT_ID, UM_ROLE_TENANT_ID),
|
||||||
|
FOREIGN KEY(UM_ROLE_ID,UM_ROLE_TENANT_ID) REFERENCES UM_ROLE(UM_ID,UM_TENANT_ID) ON DELETE CASCADE ,
|
||||||
|
FOREIGN KEY(UM_USER_ID,UM_USER_TENANT_ID) REFERENCES UM_USER(UM_ID,UM_TENANT_ID) ON DELETE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_ACCOUNT_MAPPING(
|
||||||
|
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
UM_USER_NAME VARCHAR(255) NOT NULL,
|
||||||
|
UM_TENANT_ID INTEGER NOT NULL,
|
||||||
|
UM_USER_STORE_DOMAIN VARCHAR(100),
|
||||||
|
UM_ACC_LINK_ID INTEGER NOT NULL,
|
||||||
|
UNIQUE(UM_USER_NAME, UM_TENANT_ID, UM_USER_STORE_DOMAIN, UM_ACC_LINK_ID),
|
||||||
|
FOREIGN KEY (UM_TENANT_ID) REFERENCES UM_TENANT(UM_ID) ON DELETE CASCADE,
|
||||||
|
PRIMARY KEY (UM_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_DIALECT(
|
||||||
|
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
UM_DIALECT_URI VARCHAR(255) NOT NULL,
|
||||||
|
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
UNIQUE(UM_DIALECT_URI, UM_TENANT_ID),
|
||||||
|
PRIMARY KEY (UM_ID, UM_TENANT_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_CLAIM(
|
||||||
|
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
UM_DIALECT_ID INTEGER NOT NULL,
|
||||||
|
UM_CLAIM_URI VARCHAR(255) NOT NULL,
|
||||||
|
UM_DISPLAY_TAG VARCHAR(255),
|
||||||
|
UM_DESCRIPTION VARCHAR(255),
|
||||||
|
UM_MAPPED_ATTRIBUTE_DOMAIN VARCHAR(255),
|
||||||
|
UM_MAPPED_ATTRIBUTE VARCHAR(255),
|
||||||
|
UM_REG_EX VARCHAR(255),
|
||||||
|
UM_SUPPORTED SMALLINT,
|
||||||
|
UM_REQUIRED SMALLINT,
|
||||||
|
UM_DISPLAY_ORDER INTEGER,
|
||||||
|
UM_CHECKED_ATTRIBUTE SMALLINT,
|
||||||
|
UM_READ_ONLY SMALLINT,
|
||||||
|
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
UNIQUE(UM_DIALECT_ID, UM_CLAIM_URI,UM_MAPPED_ATTRIBUTE_DOMAIN, UM_TENANT_ID),
|
||||||
|
FOREIGN KEY(UM_DIALECT_ID, UM_TENANT_ID) REFERENCES UM_DIALECT(UM_ID, UM_TENANT_ID),
|
||||||
|
PRIMARY KEY (UM_ID, UM_TENANT_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_PROFILE_CONFIG(
|
||||||
|
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
UM_DIALECT_ID INTEGER,
|
||||||
|
UM_PROFILE_NAME VARCHAR(255),
|
||||||
|
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
FOREIGN KEY(UM_DIALECT_ID, UM_TENANT_ID) REFERENCES UM_DIALECT(UM_ID, UM_TENANT_ID),
|
||||||
|
PRIMARY KEY (UM_ID, UM_TENANT_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_HYBRID_ROLE(
|
||||||
|
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
UM_ROLE_NAME VARCHAR(255),
|
||||||
|
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY (UM_ID, UM_TENANT_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_HYBRID_USER_ROLE(
|
||||||
|
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
UM_USER_NAME VARCHAR(255),
|
||||||
|
UM_ROLE_ID INTEGER NOT NULL,
|
||||||
|
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
UM_DOMAIN_ID INTEGER,
|
||||||
|
UNIQUE (UM_USER_NAME, UM_ROLE_ID, UM_TENANT_ID,UM_DOMAIN_ID),
|
||||||
|
FOREIGN KEY (UM_ROLE_ID, UM_TENANT_ID) REFERENCES UM_HYBRID_ROLE(UM_ID, UM_TENANT_ID) ON DELETE CASCADE,
|
||||||
|
FOREIGN KEY (UM_DOMAIN_ID, UM_TENANT_ID) REFERENCES UM_DOMAIN(UM_DOMAIN_ID, UM_TENANT_ID) ON DELETE CASCADE,
|
||||||
|
PRIMARY KEY (UM_ID, UM_TENANT_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_HYBRID_REMEMBER_ME (
|
||||||
|
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
UM_USER_NAME VARCHAR(255) NOT NULL,
|
||||||
|
UM_COOKIE_VALUE VARCHAR(1024),
|
||||||
|
UM_CREATED_TIME TIMESTAMP,
|
||||||
|
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY (UM_ID, UM_TENANT_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_SYSTEM_ROLE(
|
||||||
|
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
UM_ROLE_NAME VARCHAR(255),
|
||||||
|
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY (UM_ID, UM_TENANT_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS UM_SYSTEM_USER_ROLE(
|
||||||
|
UM_ID INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
UM_USER_NAME VARCHAR(255),
|
||||||
|
UM_ROLE_ID INTEGER NOT NULL,
|
||||||
|
UM_TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
UNIQUE (UM_USER_NAME, UM_ROLE_ID, UM_TENANT_ID),
|
||||||
|
FOREIGN KEY (UM_ROLE_ID, UM_TENANT_ID) REFERENCES UM_SYSTEM_ROLE(UM_ID, UM_TENANT_ID),
|
||||||
|
PRIMARY KEY (UM_ID, UM_TENANT_ID)
|
||||||
|
);
|
@ -0,0 +1,50 @@
|
|||||||
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
~ Copyright 2017 WSO2 Inc. (http://wso2.com)
|
||||||
|
~
|
||||||
|
~ 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.
|
||||||
|
-->
|
||||||
|
<wso2registry>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
For details on configuring different config & governance registries see;
|
||||||
|
http://wso2.org/library/tutorials/2010/04/sharing-registry-space-across-multiple-product-instances
|
||||||
|
-->
|
||||||
|
|
||||||
|
<currentDBConfig>wso2registry</currentDBConfig>
|
||||||
|
<readOnly>false</readOnly>
|
||||||
|
<enableCache>true</enableCache>
|
||||||
|
<registryRoot>/</registryRoot>
|
||||||
|
|
||||||
|
<dbConfig name="wso2registry">
|
||||||
|
<url>jdbc:h2:./target/databasetest/CARBON_TEST</url>
|
||||||
|
<!--userName>sa</userName>
|
||||||
|
<password>sa</password-->
|
||||||
|
<driverName>org.h2.Driver</driverName>
|
||||||
|
<maxActive>80</maxActive>
|
||||||
|
<maxWait>60000</maxWait>
|
||||||
|
<minIdle>5</minIdle>
|
||||||
|
</dbConfig>
|
||||||
|
|
||||||
|
<versionResourcesOnChange>false</versionResourcesOnChange>
|
||||||
|
|
||||||
|
<!-- NOTE: You can edit the options under "StaticConfiguration" only before the
|
||||||
|
startup. -->
|
||||||
|
<staticConfiguration>
|
||||||
|
<versioningProperties>true</versioningProperties>
|
||||||
|
<versioningComments>true</versioningComments>
|
||||||
|
<versioningTags>true</versioningTags>
|
||||||
|
<versioningRatings>true</versioningRatings>
|
||||||
|
</staticConfiguration>
|
||||||
|
</wso2registry>
|
@ -0,0 +1,29 @@
|
|||||||
|
<!--
|
||||||
|
~ Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
~
|
||||||
|
~ WSO2 Inc. 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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
|
||||||
|
|
||||||
|
<suite name="DeviceManagementExtensions">
|
||||||
|
<parameter name="useDefaultListeners" value="false"/>
|
||||||
|
|
||||||
|
<test name="DeviceType Manager Service Test Cases" preserve-order="true">
|
||||||
|
<classes>
|
||||||
|
<class name="org.wso2.carbon.apimgt.webapp.publisher.APIPublisherServiceTest"/>
|
||||||
|
</classes>
|
||||||
|
</test>
|
||||||
|
</suite>
|
@ -0,0 +1,80 @@
|
|||||||
|
<!--
|
||||||
|
~ Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
~
|
||||||
|
~ WSO2 Inc. 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.
|
||||||
|
-->
|
||||||
|
<UserManager>
|
||||||
|
<Realm>
|
||||||
|
<Configuration>
|
||||||
|
<AddAdmin>true</AddAdmin>
|
||||||
|
<AdminRole>admin</AdminRole>
|
||||||
|
<AdminUser>
|
||||||
|
<UserName>admin</UserName>
|
||||||
|
<Password>admin</Password>
|
||||||
|
</AdminUser>
|
||||||
|
<EveryOneRoleName>everyone</EveryOneRoleName>
|
||||||
|
<ReadOnly>false</ReadOnly>
|
||||||
|
<MaxUserNameListLength>500</MaxUserNameListLength>
|
||||||
|
<Property name="url">jdbc:h2:target/databasetest/CARBON_TEST</Property>
|
||||||
|
<Property name="driverName">org.h2.Driver</Property>
|
||||||
|
<Property name="maxActive">50</Property>
|
||||||
|
<Property name="maxWait">60000</Property>
|
||||||
|
<Property name="minIdle">5</Property>
|
||||||
|
</Configuration>
|
||||||
|
<UserStoreManager class="org.wso2.carbon.user.core.jdbc.JDBCUserStoreManager">
|
||||||
|
<Property name="TenantManager">org.wso2.carbon.user.core.tenant.JDBCTenantManager</Property>
|
||||||
|
<Property name="ReadOnly">false</Property>
|
||||||
|
<Property name="MaxUserNameListLength">100</Property>
|
||||||
|
<Property name="IsEmailUserName">false</Property>
|
||||||
|
<Property name="DomainCalculation">default</Property>
|
||||||
|
<Property name="PasswordDigest">SHA-256</Property>
|
||||||
|
<Property name="StoreSaltedPassword">true</Property>
|
||||||
|
<Property name="ReadGroups">true</Property>
|
||||||
|
<Property name="WriteGroups">true</Property>
|
||||||
|
<Property name="UserNameUniqueAcrossTenants">false</Property>
|
||||||
|
<Property name="PasswordJavaRegEx">^[\S]{5,30}$</Property>
|
||||||
|
<Property name="PasswordJavaRegExViolationErrorMsg">Password length should be between 5 to 30 characters
|
||||||
|
</Property>
|
||||||
|
<Property name="PasswordJavaScriptRegEx">^[\S]{5,30}$</Property>
|
||||||
|
<Property name="UsernameJavaRegEx">[a-zA-Z0-9._-|//]{3,30}$</Property>
|
||||||
|
<Property name="UsernameJavaScriptRegEx">^[\S]{3,30}$</Property>
|
||||||
|
<Property name="RolenameJavaRegEx">^[^~!#$;%^*+={}\\|\\\\<>,\'\"]{3,30}$</Property>
|
||||||
|
<Property name="RolenameJavaScriptRegEx">^[\S]{3,30}$</Property>
|
||||||
|
<Property name="UserRolesCacheEnabled">true</Property>
|
||||||
|
<Property name="MaxRoleNameListLength">100</Property>
|
||||||
|
<Property name="MaxUserNameListLength">100</Property>
|
||||||
|
<Property name="SharedGroupEnabled">false</Property>
|
||||||
|
<Property name="SCIMEnabled">false</Property>
|
||||||
|
<Property name="CaseSensitiveUsername">true</Property>
|
||||||
|
<Property name="MultiAttributeSeparator">,</Property>
|
||||||
|
<Property name="BulkImportSupported">true</Property>
|
||||||
|
</UserStoreManager>
|
||||||
|
<AuthorizationManager
|
||||||
|
class="org.wso2.carbon.user.core.authorization.JDBCAuthorizationManager">
|
||||||
|
<Property name="AuthorizationCacheEnabled">true</Property>
|
||||||
|
</AuthorizationManager>
|
||||||
|
</Realm>
|
||||||
|
<SystemPermission>
|
||||||
|
<Permission>login</Permission>
|
||||||
|
<Permission>manage-configuration</Permission>
|
||||||
|
<Permission>manage-security</Permission>
|
||||||
|
<Permission>upload-services</Permission>
|
||||||
|
<Permission>manage-services</Permission>
|
||||||
|
<Permission>manage-lc-configuration</Permission>
|
||||||
|
<Permission>manage-mediation</Permission>
|
||||||
|
<Permission>monitor-system</Permission>
|
||||||
|
<Permission>delegate-identity</Permission>
|
||||||
|
</SystemPermission>
|
||||||
|
</UserManager>
|
Loading…
Reference in new issue