/* * SoapUI, Copyright (C) 2004-2016 SmartBear Software * * Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent * versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * * http://ec.europa.eu/idabc/eupl * * Unless required by applicable law or agreed to in writing, software distributed under the Licence is * distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the Licence for the specific language governing permissions and limitations * under the Licence. */ package com.eviware.soapui.impl.rest.actions.support; import com.eviware.soapui.impl.rest.RestResource; import com.eviware.soapui.impl.rest.RestService; import com.eviware.soapui.impl.rest.actions.service.NewRestResourceAction; import com.eviware.soapui.support.UISupport; import com.eviware.soapui.utils.ModelItemFactory; import com.eviware.soapui.utils.StubbedDialogs; import com.eviware.x.dialogs.XDialogs; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.util.List; import static com.eviware.soapui.utils.CommonMatchers.aCollectionWithSize; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; /** * Tests generic functionality in NewRestResourceActionBase using an instance of NewRestResourceAction */ public class NewRestResourceActionBaseTest { public static final String ENDPOINT = "http://sopranos.com"; private static final String PARENT_RESOURCE_PATH = "godfather"; private XDialogs originalDialogs; private StubbedDialogs stubbedDialogs; private RestService service; private NewRestResourceAction action; private RestResource parentResource; @Before public void setUp() throws Exception { originalDialogs = UISupport.getDialogs(); stubbedDialogs = new StubbedDialogs(); UISupport.setDialogs(stubbedDialogs); service = ModelItemFactory.makeRestService(); service.addEndpoint(ENDPOINT); parentResource = service.addNewResource("parent", PARENT_RESOURCE_PATH); action = new NewRestResourceAction(); } @After public void tearDown() throws Exception { UISupport.setDialogs(originalDialogs); } @Test public void createsResourceAsChildResourceOfPossibleParent() throws Exception { stubbedDialogs.mockConfirmWithReturnValue(true); String childResourcePath = "anthony_jr"; action.createRestResource(service, ENDPOINT + "/" + PARENT_RESOURCE_PATH + "/" + childResourcePath); List<RestResource> rootLevelResources = service.getResourceList(); assertThat(rootLevelResources, is(aCollectionWithSize(1))); RestResource newChildResource = rootLevelResources.get(0).getAllChildResources()[0]; assertThat(newChildResource.getPath(), is(childResourcePath)); } @Test public void handlesBasePathWhenFindingPossibleParent() throws Exception { String basePath = "/bada_bing/"; service.setBasePath(basePath); stubbedDialogs.mockConfirmWithReturnValue(true); String childResourcePath = "anthony_jr"; action.createRestResource(service, ENDPOINT + parentResource.getFullPath() + "/" + childResourcePath); List<RestResource> rootLevelResources = service.getResourceList(); assertThat(rootLevelResources, is(aCollectionWithSize(1))); RestResource newChildResource = rootLevelResources.get(0).getAllChildResources()[0]; assertThat(newChildResource.getPath(), is(childResourcePath)); } @Test public void createsResourceAsRootLevelResourceWhenUserRejects() throws Exception { stubbedDialogs.mockConfirmWithReturnValue(false); String newResourcePath = "anthony_jr"; action.createRestResource(service, ENDPOINT + "/" + PARENT_RESOURCE_PATH + "/" + newResourcePath); List<RestResource> rootLevelResources = service.getResourceList(); assertThat(rootLevelResources, is(aCollectionWithSize(2))); } @Test public void showsCorrectConfirmationDialog() throws Exception { stubbedDialogs.mockConfirmWithReturnValue(true); String childResourcePath = "anthony_jr"; action.createRestResource(service, ENDPOINT + "/" + PARENT_RESOURCE_PATH + "/" + childResourcePath); assertThat(stubbedDialogs.getConfirmations(), is(aCollectionWithSize(1))); StubbedDialogs.Confirmation confirmation = stubbedDialogs.getConfirmations().get(0); assertThat(confirmation.title, is(NewRestResourceAction.CONFIRM_DIALOG_TITLE)); } }