/* * Copyright 2016 Red Hat, Inc. and/or its affiliates. * * 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 org.kie.workbench.common.screens.datasource.management.backend.service; import javax.enterprise.event.Event; import org.junit.Before; import org.junit.runner.RunWith; import org.kie.workbench.common.screens.datasource.management.backend.core.DeploymentOptions; import org.kie.workbench.common.screens.datasource.management.backend.core.UnDeploymentOptions; import org.kie.workbench.common.screens.datasource.management.events.DeleteDataSourceEvent; import org.kie.workbench.common.screens.datasource.management.events.NewDataSourceEvent; import org.kie.workbench.common.screens.datasource.management.events.UpdateDataSourceEvent; import org.kie.workbench.common.screens.datasource.management.model.DataSourceDef; import org.kie.workbench.common.screens.datasource.management.model.DataSourceDefEditorContent; import org.kie.workbench.common.screens.datasource.management.model.Def; import org.kie.workbench.common.screens.datasource.management.model.DefEditorContent; import org.kie.workbench.common.screens.datasource.management.service.DataSourceDefQueryService; import org.kie.workbench.common.screens.datasource.management.service.DriverDefEditorService; import org.kie.workbench.common.screens.datasource.management.util.DataSourceDefSerializer; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.uberfire.mocks.EventSourceMock; import static org.junit.Assert.fail; import static org.mockito.Mockito.*; @RunWith( MockitoJUnitRunner.class ) public class DataSourceDefEditorServiceTest extends DefEditorServiceBaseTest { @Mock private DataSourceDefQueryService dataSourceDefQueryService; @Mock private DriverDefEditorService driverDefService; @Mock private EventSourceMock<NewDataSourceEvent> newDataSourceEvent; @Mock private EventSourceMock<UpdateDataSourceEvent> updateDataSourceEvent; @Mock private Event<DeleteDataSourceEvent> deleteDataSourceEvent; private DataSourceDefEditorContent dataSourceDefEditorContent; private DataSourceDef dataSourceDef; private DataSourceDef originalDataSourceDef; @Before public void setup() { super.setup(); editorService = new DataSourceDefEditorServiceImpl( runtimeManager, serviceHelper, ioService, projectService, optionsFactory, pathNamingService, artifactResolver, dataSourceDefQueryService, driverDefService, newDataSourceEvent, updateDataSourceEvent, deleteDataSourceEvent ); dataSourceDef = new DataSourceDef(); dataSourceDef.setUuid( "uuid" ); dataSourceDef.setName( "dataSourceName" ); dataSourceDef.setConnectionURL( "connectionURL" ); dataSourceDef.setUser( "user" ); dataSourceDef.setPassword( "password" ); dataSourceDefEditorContent = new DataSourceDefEditorContent(); dataSourceDefEditorContent.setDef( dataSourceDef ); dataSourceDefEditorContent.setProject( project ); originalDataSourceDef = new DataSourceDef(); originalDataSourceDef.setUuid( "uuid" ); originalDataSourceDef.setName( "dataSourceNameOriginal" ); originalDataSourceDef.setConnectionURL( "connectionURLOriginal" ); originalDataSourceDef.setUser( "userOriginal" ); originalDataSourceDef.setPassword( "passwordOriginal" ); } @Override protected DefEditorContent getExpectedContent() { return dataSourceDefEditorContent; } @Override protected String getExpectedDefString() { return DataSourceDefSerializer.serialize( dataSourceDef ); } @Override protected String getExpectedFileName() { return dataSourceDef.getName() + ".datasource"; } @Override protected Def getExpectedDef() { return dataSourceDef; } @Override protected Def getOriginalDef() { return originalDataSourceDef; } @Override protected String getOriginalDefString() { return DataSourceDefSerializer.serialize( originalDataSourceDef ); } @Override protected void verifyCreateConditions( boolean global ) { //we wants that: try { // 1) the definition was deployed verify( runtimeManager, times( 1 ) ).deployDataSource( dataSourceDef, DeploymentOptions.create() ); } catch ( Exception e ) { fail( e.getMessage() ); } // 2) the notification was fired. NewDataSourceEvent expectedEvent; if ( global ) { expectedEvent = new NewDataSourceEvent( dataSourceDef, SESSION_ID, IDENTITY ); } else { expectedEvent = new NewDataSourceEvent( dataSourceDef, project, SESSION_ID, IDENTITY ); } verify( newDataSourceEvent, times( 1 ) ).fire( expectedEvent ); } @Override protected void verifySaveConditions() { //we wants that try { // 1) the definition was deployed verify( runtimeManager, times( 1 ) ).deployDataSource( dataSourceDef, DeploymentOptions.create() ); } catch ( Exception e ) { fail( e.getMessage() ); } // 2) the update notification was fired. verify( updateDataSourceEvent, times( 1 ) ).fire( new UpdateDataSourceEvent( dataSourceDef, project, SESSION_ID, IDENTITY, originalDataSourceDef ) ); } @Override protected void verifyDeleteConditions() { //we wants that try { // 1) the definition was un-deployed. verify( runtimeManager, times( 1 ) ).unDeployDataSource( dataSourceDeploymentInfo, UnDeploymentOptions.forcedUnDeployment() ); } catch ( Exception e ) { fail( e.getMessage() ); } // 2) the delete notification was fired. verify( deleteDataSourceEvent, times( 1 ) ).fire( new DeleteDataSourceEvent( dataSourceDef, project, SESSION_ID, IDENTITY ) ); } }