/*
* 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.handler;
import org.jboss.errai.security.shared.api.identity.User;
import org.junit.Before;
import org.junit.Test;
import org.kie.workbench.common.screens.datasource.management.backend.core.DataSourceRuntimeManager;
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.backend.service.DataSourceServicesHelper;
import org.kie.workbench.common.screens.datasource.management.backend.service.DefRegistry;
import org.kie.workbench.common.screens.datasource.management.backend.service.TestDriver;
import org.kie.workbench.common.screens.datasource.management.events.DeleteDataSourceEvent;
import org.kie.workbench.common.screens.datasource.management.events.DeleteDriverEvent;
import org.kie.workbench.common.screens.datasource.management.events.NewDataSourceEvent;
import org.kie.workbench.common.screens.datasource.management.events.NewDriverEvent;
import org.kie.workbench.common.screens.datasource.management.events.UpdateDataSourceEvent;
import org.kie.workbench.common.screens.datasource.management.events.UpdateDriverEvent;
import org.kie.workbench.common.screens.datasource.management.model.DataSourceDef;
import org.kie.workbench.common.screens.datasource.management.model.DataSourceDeploymentInfo;
import org.kie.workbench.common.screens.datasource.management.model.Def;
import org.kie.workbench.common.screens.datasource.management.model.DeploymentInfo;
import org.kie.workbench.common.screens.datasource.management.model.DriverDef;
import org.kie.workbench.common.screens.datasource.management.model.DriverDeploymentInfo;
import org.kie.workbench.common.screens.datasource.management.util.DataSourceDefSerializer;
import org.kie.workbench.common.screens.datasource.management.util.DataSourceEventHelper;
import org.kie.workbench.common.screens.datasource.management.util.DriverDefSerializer;
import org.kie.workbench.common.services.shared.project.KieProject;
import org.kie.workbench.common.services.shared.project.KieProjectService;
import org.mockito.Mock;
import org.uberfire.backend.server.util.Paths;
import org.uberfire.backend.vfs.Path;
import org.uberfire.io.IOService;
import org.uberfire.rpc.SessionInfo;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
public abstract class AbstractDefChangeHandlerTest {
protected static final String FILE_URI = "default://master@datasources/MockUri.file";
protected static final String SESSION_ID = "SESSION_ID";
protected static final String IDENTIFIER = "IDENTIFIER";
@Mock
protected DataSourceRuntimeManager runtimeManager;
@Mock
protected DataSourceServicesHelper serviceHelper;
@Mock
protected IOService ioService;
@Mock
protected KieProjectService projectService;
@Mock
protected DataSourceEventHelper eventHelper;
@Mock
protected DefRegistry defRegistry;
@Mock
protected Path path;
@Mock
protected Path originalPath;
@Mock
protected SessionInfo sessionInfo;
@Mock
protected User identity;
@Mock
protected KieProject project;
protected DataSourceDef dataSourceDef;
@Mock
protected DataSourceDef registeredDataSourceDef;
@Mock
protected DataSourceDef originalDataSourceDef;
protected DriverDef driverDef;
@Mock
protected DriverDef registeredDriverDef;
@Mock
protected DriverDef originalDriverDef;
@Mock
protected DataSourceDeploymentInfo registeredDataSourceDeploymentInfo;
@Mock
protected DataSourceDeploymentInfo originalDatasourceDeploymentInfo;
@Mock
protected DriverDeploymentInfo registeredDriverDeploymentInfo;
@Mock
protected DriverDeploymentInfo originalDriverDeploymentInfo;
protected AbstractDefChangeHandler changeHandler;
@Before
public void setup( ) {
setupChangeHandler();
when( serviceHelper.getDefRegistry( ) ).thenReturn( defRegistry );
when( projectService.resolveProject( path ) ).thenReturn( project );
when( sessionInfo.getId( ) ).thenReturn( SESSION_ID );
when( sessionInfo.getIdentity( ) ).thenReturn( identity );
when( identity.getIdentifier( ) ).thenReturn( IDENTIFIER );
dataSourceDef = new DataSourceDef( );
dataSourceDef.setUuid( "uuid" );
dataSourceDef.setName( "dataSourceName" );
dataSourceDef.setConnectionURL( "connectionURL" );
dataSourceDef.setUser( "user" );
dataSourceDef.setPassword( "password" );
driverDef = new DriverDef( );
driverDef.setUuid( "uuid" );
driverDef.setName( "driverName" );
driverDef.setDriverClass( TestDriver.class.getName( ) );
driverDef.setGroupId( "groupId" );
driverDef.setArtifactId( "artifactId" );
driverDef.setVersion( "version" );
when( registeredDataSourceDef.getUuid( ) ).thenReturn( "registeredDataSourceUuid" );
when( registeredDataSourceDeploymentInfo.getUuid( ) ).thenReturn( "registeredDataSourceUuid" );
when( originalDataSourceDef.getUuid( ) ).thenReturn( "originalDataSourceUuid" );
when( originalDatasourceDeploymentInfo.getUuid( ) ).thenReturn( "originalDataSourceUuid" );
when( registeredDriverDef.getUuid( ) ).thenReturn( "registeredDriverDefUuid" );
when( registeredDriverDeploymentInfo.getUuid( ) ).thenReturn( "registeredDriverDefUuid" );
when( originalDriverDef.getUuid( ) ).thenReturn( "originalDriverDefUuid" );
when( originalDriverDeploymentInfo.getUuid( ) ).thenReturn( "originalDriverDefUuid" );
}
protected abstract void setupChangeHandler();
/**
* Tests the case when the file added is a datasource that wasn't previously registered.
*/
@Test
public void testAddDataSourceNotRegistered( ) throws Exception {
testAddResourceNotRegistered( dataSourceDef );
}
/**
* Tests the case when the file added is a driver that wasn't previously registered.
*/
@Test
public void testAddDriverNotRegistered( ) throws Exception {
testAddResourceNotRegistered( driverDef );
}
protected void testAddResourceNotRegistered( Def def ) throws Exception {
prepareDef( def );
changeHandler.processResourceAdd( path, sessionInfo );
verifyRegisteredAndDeployed( path, def );
verifyAddEvent( path, def );
}
/**
* Tests the case when the file added is a datasource that was already registered and the definition didn't change.
*/
@Test
public void testAddDataSourceRegisteredNotChanged( ) throws Exception {
testAddResourceRegisteredNotChanged( dataSourceDef );
}
/**
* Tests the case when the file added is a driver that was already registered and the definition didn't change.
*/
@Test
public void testAddDriverRegisteredNotChanged( ) throws Exception {
testAddResourceRegisteredNotChanged( driverDef );
}
protected void testAddResourceRegisteredNotChanged( Def def ) throws Exception {
prepareDef( def );
//emulates that the definition was already registered.
prepareRegisteredResource( path, def, null );
changeHandler.processResourceAdd( path, sessionInfo );
verifyNoActions( );
}
/**
* Tests the case when the file added is a datasource that was already registered, the definition has changed,
* and the previous definition was not deployed.
*/
@Test
public void testAddDataSourceRegisteredChangedNotDeployed( ) throws Exception {
testAddResourceRegisteredChangedNotDeployed( dataSourceDef, registeredDataSourceDef );
}
/**
* Tests the case when the file added is a driver that was already registered, the definition has changed,
* and the previous definition was not deployed.
*/
@Test
public void testAddDriverRegisteredChangedNotDeployed( ) throws Exception {
testAddResourceRegisteredChangedNotDeployed( driverDef, registeredDriverDef );
}
protected void testAddResourceRegisteredChangedNotDeployed( Def def, Def registeredDef ) throws Exception {
prepareDef( def );
//emulates that a different definition is registered.
prepareRegisteredResource( path, registeredDef, null );
changeHandler.processResourceAdd( path, sessionInfo );
verifyRegisteredAndDeployed( path, def );
verifyAddEvent( path, def );
}
/**
* Tests the case when the file added is a datasource that was already registered, the definition has changed,
* and the previous definition was deployed.
*/
@Test
public void testAddDataSourceRegisteredChangedDeployed( ) throws Exception {
testAddResourceRegisteredChangedDeployed( dataSourceDef,
registeredDataSourceDef, registeredDataSourceDeploymentInfo );
}
/**
* Tests the case when the file added is a driver that was already registered, the definition has changed,
* and the previous definition was deployed.
*/
@Test
public void testAddDriverRegisteredChangedDeployed( ) throws Exception {
testAddResourceRegisteredChangedDeployed( driverDef, registeredDriverDef, registeredDriverDeploymentInfo );
}
protected void testAddResourceRegisteredChangedDeployed( Def def,
Def registeredDef,
DeploymentInfo registeredDefDeploymentInfo ) throws Exception {
prepareDef( def );
//emulates that a different definition is registered and also was deployed.
prepareRegisteredResource( path, registeredDef, registeredDefDeploymentInfo );
changeHandler.processResourceAdd( path, sessionInfo );
verifyUnDeployed( registeredDef );
verifyRegisteredAndDeployed( path, def );
verifyAddEvent( path, def );
}
/**
* Tests the case when the file updated is a datasource that wasn't previously registered.
*/
@Test
public void testUpdateDataSourceNotRegistered( ) throws Exception {
testUpdateResourceNotRegistered( dataSourceDef );
}
/**
* Tests the case when the file updated is a driver that wasn't previously registered.
*/
@Test
public void testUpdateDriverNotRegistered( ) throws Exception {
testUpdateResourceNotRegistered( driverDef );
}
protected void testUpdateResourceNotRegistered( Def def ) throws Exception {
prepareDef( def );
changeHandler.processResourceUpdate( path, sessionInfo );
verifyRegisteredAndDeployed( path, def );
verifyUpdateEvent( path, def, null );
}
/**
* Tests the case when the file updated is a datasource that was already registered and the definition didn't change.
*/
@Test
public void testUpdateDataSourceRegisteredNotChanged( ) throws Exception {
testUpdateResourceRegisteredNotChanged( dataSourceDef );
}
/**
* Tests the case when the file updated is a driver that was already registered and the definition didn't change.
*/
@Test
public void testUpdateDriverRegisteredNotChanged( ) throws Exception {
testUpdateResourceRegisteredNotChanged( driverDef );
}
protected void testUpdateResourceRegisteredNotChanged( Def def ) throws Exception {
prepareDef( def );
//emulates that the definition was already registered.
prepareRegisteredResource( path, def, null );
changeHandler.processResourceUpdate( path, sessionInfo );
verifyNoActions( );
}
/**
* Tests the case when the file updated is a datasource that was already registered, the definition has changed,
* and the previous definition was not deployed.
*/
@Test
public void testUpdateDataSourceRegisteredChangedNotDeployed( ) throws Exception {
testUpdateResourceRegisteredChangedNotDeployed( dataSourceDef, registeredDataSourceDef );
}
/**
* Tests the case when the file updated is a driver that was already registered, the definition has changed,
* and the previous definition was not deployed.
*/
@Test
public void testUpdateDriverRegisteredChangedNotDeployed( ) throws Exception {
testUpdateResourceRegisteredChangedNotDeployed( driverDef, registeredDriverDef );
}
protected void testUpdateResourceRegisteredChangedNotDeployed( Def def, Def registeredDef ) throws Exception {
prepareDef( def );
//emulates that a different definition is registered, but not deployed.
prepareRegisteredResource( path, registeredDef, null );
changeHandler.processResourceUpdate( path, sessionInfo );
verifyRegisteredAndDeployed( path, def );
verifyUpdateEvent( path, def, registeredDef );
}
/**
* Tests the case when the file updated is a datasource that was already registered, the definition has changed,
* and the previous definition was deployed.
*/
@Test
public void testUpdateDataSourceRegisteredChangedDeployed( ) throws Exception {
testUpdateResourceRegisteredChangedDeployed( dataSourceDef, registeredDataSourceDef,
registeredDataSourceDeploymentInfo );
}
/**
* Tests the case when the file updated is a driver that was already registered, the definition has changed,
* and the previous definition was deployed.
*/
@Test
public void testUpdateDriverRegisteredChangedDeployed( ) throws Exception {
testUpdateResourceRegisteredChangedDeployed( driverDef, registeredDriverDef, registeredDriverDeploymentInfo );
}
protected void testUpdateResourceRegisteredChangedDeployed( Def def,
Def registeredDef,
DeploymentInfo registeredDefDeploymentInfo ) throws Exception {
prepareDef( def );
//emulates that a different definition is registered and also was deployed.
prepareRegisteredResource( path, registeredDef, registeredDefDeploymentInfo );
changeHandler.processResourceUpdate( path, sessionInfo );
verifyUnDeployed( registeredDef );
verifyRegisteredAndDeployed( path, def );
verifyUpdateEvent( path, def, registeredDef );
}
/**
* Tests the case where the file in the original path wasn't registered, and the target path is not registered.
*/
@Test
public void testRenameDataSourceOriginalPathNotRegisteredTargetPathNotRegistered( ) throws Exception {
testRenameResourceOriginalPathNotRegisteredTargetPathNotRegistered( dataSourceDef );
}
/**
* Tests the case where the file in the original path wasn't registered, and the target path is not registered.
*/
@Test
public void testRenameDriverOriginalPathNotRegisteredTargetPathNotRegistered( ) throws Exception {
testRenameResourceOriginalPathNotRegisteredTargetPathNotRegistered( driverDef );
}
protected void testRenameResourceOriginalPathNotRegisteredTargetPathNotRegistered( Def def ) throws Exception {
prepareDef( def );
changeHandler.processResourceRename( originalPath, path, sessionInfo );
verifyRegisteredAndDeployed( path, def );
verifyUpdateEvent( path, def, null );
}
/**
* Tests the case where the file in the original path was registered, and the target path is not registered.
*/
@Test
public void testRenameDataSourceOriginalPathRegisteredTargetPathNotRegistered( ) throws Exception {
testRenameResourceOriginalPathRegisteredTargetPathNotRegistered( dataSourceDef,
originalDataSourceDef, originalDatasourceDeploymentInfo );
}
/**
* Tests the case where the file in the original path was registered, and the target path is not registered.
*/
@Test
public void testRenameDriverOriginalPathRegisteredTargetPathNotRegistered( ) throws Exception {
testRenameResourceOriginalPathRegisteredTargetPathNotRegistered( driverDef,
originalDriverDef, originalDriverDeploymentInfo );
}
protected void testRenameResourceOriginalPathRegisteredTargetPathNotRegistered( Def def,
Def originalDef,
DeploymentInfo originalDeploymentInfo ) throws Exception {
prepareDef( def );
prepareRegisteredResource( originalPath, originalDef, originalDeploymentInfo );
changeHandler.processResourceRename( originalPath, path, sessionInfo );
verifyUnDeployed( originalDef );
verifyRegisteredAndDeployed( path, def );
verifyUpdateEvent( path, def, null );
}
/**
* Tests the case where the file in the original path was registered, and the target path is also registered but
* the definition didn't change
*/
@Test
public void testRenameDataSourceOriginalPathRegisteredTargetPathRegisteredNotChanged( ) throws Exception {
testRenameResourceSourceOriginalPathRegisteredTargetPathRegisteredNotChanged( dataSourceDef,
originalDataSourceDef, originalDatasourceDeploymentInfo );
}
/**
* Tests the case where the file in the original path was registered, and the target path is also registered but
* the definition didn't change
*/
@Test
public void testRenameDriverOriginalPathRegisteredTargetPathRegisteredNotChanged( ) throws Exception {
testRenameResourceSourceOriginalPathRegisteredTargetPathRegisteredNotChanged( driverDef,
originalDriverDef, originalDriverDeploymentInfo );
}
protected void testRenameResourceSourceOriginalPathRegisteredTargetPathRegisteredNotChanged( Def def,
Def originalDef,
DeploymentInfo originalDeploymentInfo ) throws Exception {
prepareDef( def );
prepareRegisteredResource( originalPath, originalDef, originalDeploymentInfo );
prepareRegisteredResource( path, def, null );
changeHandler.processResourceRename( originalPath, path, sessionInfo );
verifyUnDeployed( originalDef );
verify( defRegistry, never( ) ).setEntry( path, def );
verifyNoEvents( );
verifyNoDeployments( );
}
/**
* Tests the case where the file in the original path was registered, the target path is also registered and the
* definition has changed, and the original definition was not deployed.
*/
@Test
public void testRenameDataSourceOriginalPathRegisteredTargetPathRegisteredChangedNotDeployed( ) throws Exception {
testRenameResourceOriginalPathRegisteredTargetPathRegisteredChangedNotDeployed( dataSourceDef,
originalDataSourceDef, originalDatasourceDeploymentInfo, registeredDataSourceDef );
}
/**
* Tests the case where the file in the original path was registered, the target path is also registered and the
* definition has changed, and the original definition was not deployed.
*/
@Test
public void testRenameDriverOriginalPathRegisteredTargetPathRegisteredChangedNotDeployed( ) throws Exception {
testRenameResourceOriginalPathRegisteredTargetPathRegisteredChangedNotDeployed( driverDef,
originalDriverDef, originalDriverDeploymentInfo, registeredDriverDef );
}
protected void testRenameResourceOriginalPathRegisteredTargetPathRegisteredChangedNotDeployed( Def def,
Def originalDef,
DeploymentInfo originalDeploymentInfo,
Def registeredDef ) throws Exception {
prepareDef( def );
prepareRegisteredResource( originalPath, originalDef, originalDeploymentInfo );
prepareRegisteredResource( path, registeredDef, null );
changeHandler.processResourceRename( originalPath, path, sessionInfo );
verifyUnDeployed( originalDef );
verifyRegisteredAndDeployed( path, def );
verifyUpdateEvent( path, def, registeredDef );
}
/**
* Tests the case where the file in the original path was registered, the target path is also registered and the
* definition has changed, and the original definition was deployed.
*/
@Test
public void testRenameDataSourceOriginalPathRegisteredTargetPathRegisteredChangedDeployed( ) throws Exception {
testRenameResourceOriginalPathRegisteredTargetPathRegisteredChangedDeployed( dataSourceDef,
originalDataSourceDef, originalDatasourceDeploymentInfo, registeredDataSourceDef, registeredDataSourceDeploymentInfo );
}
/**
* Tests the case where the file in the original path was registered, the target path is also registered and the
* definition has changed, and the original definition was deployed.
*/
@Test
public void testRenameDriverOriginalPathRegisteredTargetPathRegisteredChangedDeployed( ) throws Exception {
testRenameResourceOriginalPathRegisteredTargetPathRegisteredChangedDeployed( driverDef,
originalDriverDef, originalDriverDeploymentInfo, registeredDriverDef, registeredDriverDeploymentInfo );
}
protected void testRenameResourceOriginalPathRegisteredTargetPathRegisteredChangedDeployed( Def def,
Def originalDef,
DeploymentInfo originalDeploymentInfo,
Def registeredDef,
DeploymentInfo registeredDeploymentInfo ) throws Exception {
prepareDef( def );
prepareRegisteredResource( originalPath, originalDef, originalDeploymentInfo );
prepareRegisteredResource( path, registeredDef, registeredDeploymentInfo );
changeHandler.processResourceRename( originalPath, path, sessionInfo );
verifyUnDeployed( originalDef );
verifyUnDeployed( registeredDef );
verifyRegisteredAndDeployed( path, def );
verifyUpdateEvent( path, def, registeredDef );
}
/**
* Tests the case where the deleted file is not registered.
*/
@Test
public void testDeleteDataSourceNotRegistered( ) throws Exception {
testDeleteResourceNotRegistered( );
}
/**
* Tests the case where the deleted file is not registered.
*/
@Test
public void testDeleteDriverNotRegistered( ) throws Exception {
testDeleteResourceNotRegistered( );
}
protected void testDeleteResourceNotRegistered( ) throws Exception {
changeHandler.processResourceDelete( path, sessionInfo );
verify( defRegistry, times( 1 ) ).getEntry( path );
verifyNoActions( );
}
/**
* Tests the case where the deleted file is registered but not deployed.
*/
@Test
public void testDeleteDataSourceRegisteredNotDeployed( ) throws Exception {
testDeleteResourceRegisteredNotDeployed( registeredDataSourceDef );
}
/**
* Tests the case where the deleted file is registered but not deployed.
*/
@Test
public void testDeleteDriverRegisteredNotDeployed( ) throws Exception {
testDeleteResourceRegisteredNotDeployed( registeredDriverDef );
}
protected void testDeleteResourceRegisteredNotDeployed( Def registeredDef ) throws Exception {
prepareRegisteredResource( path, registeredDef, null );
changeHandler.processResourceDelete( path, sessionInfo );
verify( defRegistry, times( 1 ) ).getEntry( path );
verify( defRegistry, times( 1 ) ).invalidateCache( path );
verifyDeleteEvent( path, registeredDef );
}
/**
* Tests the case where the deleted file is registered and deployed deployed.
*/
@Test
public void testDeleteDataSourceRegisteredDeployed( ) throws Exception {
testDeleteResourceRegisteredDeployed( registeredDataSourceDef, registeredDataSourceDeploymentInfo );
}
/**
* Tests the case where the deleted file is registered and deployed deployed.
*/
@Test
public void testDeleteDriverRegisteredDeployed( ) throws Exception {
testDeleteResourceRegisteredDeployed( registeredDriverDef, registeredDriverDeploymentInfo );
}
protected void testDeleteResourceRegisteredDeployed( Def registeredDef, DeploymentInfo registeredDeploymentInfo ) throws Exception {
prepareRegisteredResource( path, registeredDef, registeredDeploymentInfo );
changeHandler.processResourceDelete( path, sessionInfo );
verify( defRegistry, times( 1 ) ).getEntry( path );
verify( defRegistry, times( 1 ) ).invalidateCache( path );
verifyUnDeployed( registeredDef );
verifyDeleteEvent( path, registeredDef );
}
/**
* Verifies that the given definition has been properly registered and deployed.
*/
protected void verifyRegisteredAndDeployed( Path path, Def def ) throws Exception {
// the definition should have been registered and deployed
verify( defRegistry, times( 1 ) ).setEntry( path, def );
if ( def instanceof DataSourceDef ) {
verify( runtimeManager, times( 1 ) ).deployDataSource( ( DataSourceDef ) def, DeploymentOptions.create( ) );
} else {
verify( runtimeManager, times( 1 ) ).deployDriver( ( DriverDef ) def, DeploymentOptions.create( ) );
}
}
/**
* Verifies that the given definition has been un-deployed.
*/
protected void verifyUnDeployed( Def def ) throws Exception {
// the definition should have been un-deployed.
if ( def instanceof DataSourceDef ) {
DataSourceDeploymentInfo deploymentInfo = runtimeManager.getDataSourceDeploymentInfo( def.getUuid( ) );
// is deployed by construction
assertNotNull( deploymentInfo );
verify( runtimeManager, times( 1 ) ).unDeployDataSource( deploymentInfo,
UnDeploymentOptions.forcedUnDeployment( ) );
} else {
DriverDeploymentInfo deploymentInfo = runtimeManager.getDriverDeploymentInfo( def.getUuid( ) );
// is deployed by construction
assertNotNull( deploymentInfo );
verify( runtimeManager, times( 1 ) ).unDeployDriver( deploymentInfo,
UnDeploymentOptions.forcedUnDeployment( ) );
}
}
/**
* verifies that no actions has been invoked on the main components.
*/
protected void verifyNoActions( ) throws Exception {
verify( defRegistry, never( ) ).setEntry( any( Path.class ), any( Def.class ) );
verify( defRegistry, never( ) ).invalidateCache( any( Path.class ) );
verify( runtimeManager, never( ) ).unDeployDataSource( any( DataSourceDeploymentInfo.class ), any( UnDeploymentOptions.class ) );
verify( runtimeManager, never( ) ).deployDataSource( any( DataSourceDef.class ), any( DeploymentOptions.class ) );
verify( runtimeManager, never( ) ).unDeployDriver( any( DriverDeploymentInfo.class ), any( UnDeploymentOptions.class ) );
verify( runtimeManager, never( ) ).deployDriver( any( DriverDef.class ), any( DeploymentOptions.class ) );
verifyNoEvents( );
}
protected void verifyNoDeployments( ) throws Exception {
verify( runtimeManager, never( ) ).deployDataSource( any( DataSourceDef.class ), any( DeploymentOptions.class ) );
verify( runtimeManager, never( ) ).deployDriver( any( DriverDef.class ), any( DeploymentOptions.class ) );
}
protected void verifyNoEvents( ) {
verify( eventHelper, never( ) ).fireCreateEvent( any( NewDriverEvent.class ) );
verify( eventHelper, never( ) ).fireUpdateEvent( any( UpdateDriverEvent.class ) );
verify( eventHelper, never( ) ).fireDeleteEvent( any( DeleteDriverEvent.class ) );
verify( eventHelper, never( ) ).fireCreateEvent( any( NewDataSourceEvent.class ) );
verify( eventHelper, never( ) ).fireUpdateEvent( any( UpdateDataSourceEvent.class ) );
verify( eventHelper, never( ) ).fireDeleteEvent( any( DeleteDataSourceEvent.class ) );
}
protected void verifyAddEvent( Path path, Def addedDef ) {
if ( addedDef instanceof DataSourceDef ) {
verify( eventHelper, times( 1 ) ).fireCreateEvent( new NewDataSourceEvent( ( DataSourceDef ) addedDef,
projectService.resolveProject( path ), SESSION_ID, IDENTIFIER ) );
} else {
verify( eventHelper, times( 1 ) ).fireCreateEvent( new NewDriverEvent( ( DriverDef ) addedDef,
projectService.resolveProject( path ), SESSION_ID, IDENTIFIER ) );
}
}
protected void verifyUpdateEvent( Path path, Def def, Def originalDef ) {
if ( def instanceof DataSourceDef ) {
verify( eventHelper, times( 1 ) ).fireUpdateEvent( new UpdateDataSourceEvent( ( DataSourceDef ) def,
projectService.resolveProject( path ), SESSION_ID, IDENTIFIER, ( DataSourceDef ) originalDef ) );
} else {
verify( eventHelper, times( 1 ) ).fireUpdateEvent( new UpdateDriverEvent( ( DriverDef ) def,
projectService.resolveProject( path ), SESSION_ID, IDENTIFIER, ( DriverDef ) originalDef ) );
}
}
protected void verifyDeleteEvent( Path path, Def def ) {
if ( def instanceof DataSourceDef ) {
verify( eventHelper, times( 1 ) ).fireDeleteEvent( new DeleteDataSourceEvent( ( DataSourceDef ) def,
projectService.resolveProject( path ), SESSION_ID, IDENTIFIER ) );
} else {
verify( eventHelper, times( 1 ) ).fireDeleteEvent( new DeleteDriverEvent( ( DriverDef ) def,
projectService.resolveProject( path ), SESSION_ID, IDENTIFIER ) );
}
}
protected void prepareRegisteredResource( Path path, Def registeredDef, DeploymentInfo deploymentInfo ) throws Exception {
when( defRegistry.getEntry( path ) ).thenReturn( registeredDef );
if ( registeredDef != null && deploymentInfo != null ) {
if ( registeredDef instanceof DataSourceDef ) {
when( runtimeManager.getDataSourceDeploymentInfo( registeredDef.getUuid( ) ) ).thenReturn( ( DataSourceDeploymentInfo ) deploymentInfo );
} else {
when( runtimeManager.getDriverDeploymentInfo( registeredDef.getUuid( ) ) ).thenReturn( ( DriverDeploymentInfo ) deploymentInfo );
}
}
}
protected void prepareDef( Def def ) {
when( path.toURI( ) ).thenReturn( FILE_URI );
String content;
if ( def instanceof DataSourceDef ) {
when( path.getFileName( ) ).thenReturn( "File.datasource" );
when( serviceHelper.isDataSourceFile( path ) ).thenReturn( true );
content = DataSourceDefSerializer.serialize( ( DataSourceDef ) def );
} else {
when( path.getFileName( ) ).thenReturn( "File.driver" );
when( serviceHelper.isDriverFile( path ) ).thenReturn( true );
content = DriverDefSerializer.serialize( ( DriverDef ) def );
}
when( ioService.readAllString( Paths.convert( path ) ) ).thenReturn( content );
}
}