/* * 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 java.net.URI; import java.net.URL; 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.DeleteDriverEvent; import org.kie.workbench.common.screens.datasource.management.events.NewDriverEvent; import org.kie.workbench.common.screens.datasource.management.events.UpdateDriverEvent; 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.model.DriverDef; import org.kie.workbench.common.screens.datasource.management.model.DriverDefEditorContent; import org.kie.workbench.common.screens.datasource.management.util.DriverDefSerializer; 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 DriverDefEditorServiceTest extends DefEditorServiceBaseTest { @Mock private EventSourceMock<NewDriverEvent> newDriverEvent; @Mock private EventSourceMock<UpdateDriverEvent> updateDriverEvent; @Mock private EventSourceMock<DeleteDriverEvent> deleteDriverEvent; private DriverDefEditorContent driverDefEditorContent; private DriverDef driverDef; private DriverDef originalDriverDef; private URI uri; @Before public void setup() { super.setup(); editorService = new DriverDefEditorServiceImpl( runtimeManager, serviceHelper, ioService, projectService, optionsFactory, pathNamingService, artifactResolver, newDriverEvent, updateDriverEvent, deleteDriverEvent ); driverDef = new DriverDef(); driverDef.setUuid( "uuid" ); driverDef.setName( "driverName" ); driverDef.setDriverClass( TestDriver.class.getName() ); driverDef.setGroupId( "groupId" ); driverDef.setArtifactId( "artifactId" ); driverDef.setVersion( "version" ); driverDefEditorContent = new DriverDefEditorContent(); driverDefEditorContent.setDef( driverDef ); driverDefEditorContent.setProject( project ); originalDriverDef = new DriverDef(); originalDriverDef.setUuid( "uuid" ); originalDriverDef.setName( "driverNameOriginal" ); originalDriverDef.setDriverClass( TestDriver.class.getName() ); originalDriverDef.setGroupId( "groupIdOriginal" ); originalDriverDef.setArtifactId( "artifactIdOriginal" ); originalDriverDef.setVersion( "versionOriginal" ); try { URL resource = getClass().getClassLoader().getResource( "DataSourceFiles" ); uri = resource.toURI(); when( artifactResolver.resolve( driverDef.getGroupId(), driverDef.getArtifactId(), driverDef.getVersion() ) ).thenReturn( uri ); } catch ( Exception e ) { fail ( e.getMessage() ); } } @Override protected DefEditorContent getExpectedContent() { return driverDefEditorContent; } @Override protected String getExpectedDefString() { return DriverDefSerializer.serialize( driverDef ); } @Override protected String getExpectedFileName() { return driverDef.getName() + ".driver"; } @Override protected Def getExpectedDef() { return driverDef; } @Override protected Def getOriginalDef() { return originalDriverDef; } @Override protected String getOriginalDefString() { return DriverDefSerializer.serialize( originalDriverDef ); } @Override protected void verifyCreateConditions( boolean global ) { //we wants that: try { // 1) the definition was deployed. verify( runtimeManager, times( 1 ) ).deployDriver( driverDef, DeploymentOptions.create() ); } catch ( Exception e ) { fail ( e.getMessage() ); } // 2) the notification was fired. NewDriverEvent expectedEvent; if ( global ) { expectedEvent = new NewDriverEvent( driverDef, SESSION_ID, IDENTITY ); } else { expectedEvent = new NewDriverEvent( driverDef, project, SESSION_ID, IDENTITY ); } verify( newDriverEvent, times( 1 ) ).fire( expectedEvent ); } @Override protected void verifySaveConditions() { //we wants that try { // 1) the definition was deployed verify( runtimeManager, times( 1 ) ).deployDriver( driverDef, DeploymentOptions.create() ); } catch ( Exception e ) { fail ( e.getMessage() ); } // 2) the update notification was fired. verify( updateDriverEvent, times( 1 ) ).fire( new UpdateDriverEvent( driverDef, project, SESSION_ID, IDENTITY, originalDriverDef ) ); } @Override protected void verifyDeleteConditions() { //we wants that try { // 1) the definition was un-deployed. verify( runtimeManager, times( 1 ) ).unDeployDriver( driverDeploymentInfo, UnDeploymentOptions.forcedUnDeployment() ); } catch ( Exception e ) { fail( e.getMessage() ); } // 2) the delete notification was fired. verify( deleteDriverEvent, times( 1 ) ).fire( new DeleteDriverEvent( driverDef, project, SESSION_ID, IDENTITY ) ); } }