/*
* 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.wsdl.submit.filters;
import com.eviware.soapui.impl.rest.RestRequest;
import com.eviware.soapui.impl.settings.XmlBeansSettingsImpl;
import com.eviware.soapui.impl.support.AbstractHttpRequest;
import com.eviware.soapui.impl.support.http.HttpRequest;
import com.eviware.soapui.impl.wsdl.WsdlRequest;
import com.eviware.soapui.impl.wsdl.WsdlSubmitContext;
import com.eviware.soapui.impl.wsdl.submit.transports.http.BaseHttpRequestTransport;
import com.eviware.soapui.impl.wsdl.teststeps.HttpTestRequest;
import com.eviware.soapui.impl.wsdl.teststeps.RestTestRequest;
import com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequest;
import com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStep;
import com.eviware.soapui.model.iface.SubmitContext;
import com.eviware.soapui.settings.CommonSettings;
import com.eviware.soapui.support.SoapUIException;
import com.eviware.soapui.utils.ModelItemFactory;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
/**
*
*/
public class PropertyExpansionRequestFilterTest {
private static final String REQUEST_CONTENT = "<type>${#TestCase#StoreType}</type>";
private static final String EXPECTED_REQUEST_CONTENT_AFTER_PROPERTY_EXPANSION = "<type>shoe_Store</type>";
private SubmitContext submitContext;
private PropertyExpansionRequestFilter requestFilter;
@Before
public void setUp() throws SoapUIException {
requestFilter = new PropertyExpansionRequestFilter();
submitContext = createSubmitContext();
}
@Test
public void performsPropertyExpansionOnWsdlTestRequestContent() throws SoapUIException {
AbstractHttpRequest request = mockRequest(WsdlTestRequest.class);
requestFilter.filterAbstractHttpRequest(submitContext, request);
String contentAfterPropertyExpansion = (String) submitContext.getProperty(BaseHttpRequestTransport.REQUEST_CONTENT);
assertThat(contentAfterPropertyExpansion, is(EXPECTED_REQUEST_CONTENT_AFTER_PROPERTY_EXPANSION));
}
@Test
public void performsPropertyExpansionOnRestTestRequestContent() throws SoapUIException {
AbstractHttpRequest request = mockRequest(RestTestRequest.class);
requestFilter.filterAbstractHttpRequest(submitContext, request);
String contentAfterPropertyExpansion = (String) submitContext.getProperty(BaseHttpRequestTransport.REQUEST_CONTENT);
assertThat(contentAfterPropertyExpansion, is(EXPECTED_REQUEST_CONTENT_AFTER_PROPERTY_EXPANSION));
}
@Test
public void performsPropertyExpansionOnHttpTestRequestContent() throws SoapUIException {
AbstractHttpRequest request = mockRequest(HttpTestRequest.class);
requestFilter.filterAbstractHttpRequest(submitContext, request);
String contentAfterPropertyExpansion = (String) submitContext.getProperty(BaseHttpRequestTransport.REQUEST_CONTENT);
assertThat(contentAfterPropertyExpansion, is(EXPECTED_REQUEST_CONTENT_AFTER_PROPERTY_EXPANSION));
}
@Test
public void performsPropertyExpansionOnWsdlRequestContent() throws SoapUIException {
AbstractHttpRequest request = mockRequest(WsdlRequest.class);
requestFilter.filterAbstractHttpRequest(submitContext, request);
String contentAfterPropertyExpansion = (String) submitContext.getProperty(BaseHttpRequestTransport.REQUEST_CONTENT);
assertThat(contentAfterPropertyExpansion, is(EXPECTED_REQUEST_CONTENT_AFTER_PROPERTY_EXPANSION));
}
@Test
public void performsPropertyExpansionOnRestRequestContent() throws SoapUIException {
AbstractHttpRequest request = mockRequest(RestRequest.class);
requestFilter.filterAbstractHttpRequest(submitContext, request);
String contentAfterPropertyExpansion = (String) submitContext.getProperty(BaseHttpRequestTransport.REQUEST_CONTENT);
assertThat(contentAfterPropertyExpansion, is(EXPECTED_REQUEST_CONTENT_AFTER_PROPERTY_EXPANSION));
}
@Test
public void performsPropertyExpansionOnHttpRequestContent() throws SoapUIException {
AbstractHttpRequest request = mockRequest(HttpRequest.class);
requestFilter.filterAbstractHttpRequest(submitContext, request);
String contentAfterPropertyExpansion = (String) submitContext.getProperty(BaseHttpRequestTransport.REQUEST_CONTENT);
assertThat(contentAfterPropertyExpansion, is(EXPECTED_REQUEST_CONTENT_AFTER_PROPERTY_EXPANSION));
}
private SubmitContext createSubmitContext() throws SoapUIException {
WsdlTestRequestStep requestStep = ModelItemFactory.makeTestRequestStep();
requestStep.getTestCase().setPropertyValue("StoreType", "shoe_Store");
SubmitContext context = new WsdlSubmitContext(requestStep);
context.setProperty(BaseHttpRequestTransport.REQUEST_CONTENT, REQUEST_CONTENT);
return context;
}
private <T extends AbstractHttpRequest> AbstractHttpRequest mockRequest(Class<T> type) {
AbstractHttpRequest request = Mockito.mock(type);
XmlBeansSettingsImpl settings = Mockito.mock(XmlBeansSettingsImpl.class);
Mockito.when(settings.getBoolean(CommonSettings.ENTITIZE_PROPERTIES)).thenReturn(false);
Mockito.when(request.getSettings()).thenReturn(settings);
return request;
}
}