package com.epam.wilma.stubconfig.dom.parser;
/*==========================================================================
Copyright 2013-2017 EPAM Systems
This file is part of Wilma.
Wilma is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Wilma is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Wilma. If not, see <http://www.gnu.org/licenses/>.
===========================================================================*/
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.verify;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.mockito.BDDMockito;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.w3c.dom.Document;
import com.epam.wilma.domain.stubconfig.StubResourceHolder;
import com.epam.wilma.domain.stubconfig.TemporaryStubResourceHolder;
import com.epam.wilma.domain.stubconfig.dialog.condition.checker.ConditionChecker;
import com.epam.wilma.domain.stubconfig.dialog.response.template.TemplateFormatter;
import com.epam.wilma.domain.stubconfig.helper.InternalResourceHolder;
import com.epam.wilma.domain.stubconfig.interceptor.RequestInterceptor;
import com.epam.wilma.domain.stubconfig.interceptor.ResponseInterceptor;
import com.epam.wilma.domain.stubconfig.sequence.SequenceHandler;
/**
* Provides unit tests for the class {@link StubResourceHolderUpdater}.
* @author Tunde_Kovacs
*
*/
public class StubResourceHolderUpdaterTest {
private static final String DEFAULT_GROUPNAME = "test";
@Mock
private StubResourceHolder stubResourceHolder;
@Mock
private TemporaryStubResourceHolder temporaryStubResourceHolder;
@Mock
private InternalResourceHolder internalResourceHolder;
@Mock
private Document document;
@InjectMocks
private StubResourceHolderUpdater underTest;
@BeforeMethod
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testUpdateResourceHolderShouldSetResources() {
//GIVEN
List<ConditionChecker> conditionCheckers = new ArrayList<>();
List<TemplateFormatter> templateFormatters = new ArrayList<>();
Map<String, byte[]> templates = new HashMap<String, byte[]>();
List<RequestInterceptor> requestInterceptors = new ArrayList<>();
List<ResponseInterceptor> responseInterceptors = new ArrayList<>();
List<SequenceHandler> sequenceHandlers = new ArrayList<>();
given(temporaryStubResourceHolder.getConditionCheckers()).willReturn(conditionCheckers);
given(temporaryStubResourceHolder.getTemplateFormatters()).willReturn(templateFormatters);
given(temporaryStubResourceHolder.getTemplates()).willReturn(templates);
given(temporaryStubResourceHolder.getRequestInterceptors()).willReturn(requestInterceptors);
given(temporaryStubResourceHolder.getResponseInterceptors()).willReturn(responseInterceptors);
given(temporaryStubResourceHolder.getSequenceHandlers()).willReturn(sequenceHandlers);
//WHEN
underTest.updateResourceHolder();
//THEN
verify(stubResourceHolder).setConditionChekers(conditionCheckers);
verify(stubResourceHolder).setTemplateFormatters(templateFormatters);
verify(stubResourceHolder).setTemplates(templates);
verify(stubResourceHolder).setRequestInterceptors(requestInterceptors);
verify(stubResourceHolder).setResponseInterceptors(responseInterceptors);
verify(stubResourceHolder).setSequenceHandlers(sequenceHandlers);
}
@Test
public void testUpdateResourceHolderWhenNoRequestInterceptorsShouldNotSetInterceptors() {
//GIVEN
given(temporaryStubResourceHolder.getRequestInterceptors()).willReturn(null);
//WHEN
underTest.updateResourceHolder();
//THEN
verify(stubResourceHolder, BDDMockito.never()).setRequestInterceptors(null);
}
@Test
public void testUpdateResourceHolderWhenNoResponseInterceptorsShouldNotSetInterceptors() {
//GIVEN
given(temporaryStubResourceHolder.getResponseInterceptors()).willReturn(null);
//WHEN
underTest.updateResourceHolder();
//THEN
verify(stubResourceHolder, BDDMockito.never()).setRequestInterceptors(null);
}
@Test
public void testClearTemporaryResourceHolderShouldCallTemporaryResourceHolder() {
//GIVEN in setUp
//WHEN
underTest.clearTemporaryResourceHolder();
//THEN
verify(temporaryStubResourceHolder).clearConditionCheckers();
verify(temporaryStubResourceHolder).clearTemplateFormatters();
verify(temporaryStubResourceHolder).clearTemplates();
verify(temporaryStubResourceHolder).clearRequestInterceptors();
verify(temporaryStubResourceHolder).clearResponseInterceptors();
verify(temporaryStubResourceHolder).clearSequenceHandlers();
}
@Test
public void testAddDocumentToResourceHolderShouldSetDocument() {
//GIVEN in setUp
//WHEN
underTest.addDocumentToResourceHolder(DEFAULT_GROUPNAME, document);
//THEN
verify(stubResourceHolder).setActualStubConfigDocument(DEFAULT_GROUPNAME, document);
}
@Test
public void testInitializeTemporaryResourceHolderShouldInitializeResources() {
//GIVEN
List<ConditionChecker> conditionCheckers = new ArrayList<>();
List<TemplateFormatter> templateFormatters = new ArrayList<>();
List<RequestInterceptor> requestInterceptors = new ArrayList<>();
List<ResponseInterceptor> responseInterceptors = new ArrayList<>();
List<SequenceHandler> sequenceHandlers = new ArrayList<>();
given(internalResourceHolder.getConditionCheckers()).willReturn(conditionCheckers);
given(internalResourceHolder.getTemplateFormatters()).willReturn(templateFormatters);
given(internalResourceHolder.getRequestInterceptors()).willReturn(requestInterceptors);
given(internalResourceHolder.getResponseInterceptors()).willReturn(responseInterceptors);
given(internalResourceHolder.getSequenceHandlers()).willReturn(sequenceHandlers);
//WHEN
underTest.initializeTemporaryResourceHolder();
//THEN
verify(temporaryStubResourceHolder).setConditionCheckers(conditionCheckers);
verify(temporaryStubResourceHolder).setTemplateFormatters(templateFormatters);
verify(temporaryStubResourceHolder).setRequestInterceptors(requestInterceptors);
verify(temporaryStubResourceHolder).setResponseInterceptors(responseInterceptors);
verify(temporaryStubResourceHolder).setSequenceHandlers(sequenceHandlers);
}
@Test
public void testInitializeTemporaryResourceHolderWhenNoInterceptorsShouldNotInitializeResources() {
//GIVEN
List<ConditionChecker> conditionCheckers = new ArrayList<>();
List<TemplateFormatter> templateFormatters = new ArrayList<>();
List<SequenceHandler> sequenceHandlers = new ArrayList<>();
given(internalResourceHolder.getConditionCheckers()).willReturn(conditionCheckers);
given(internalResourceHolder.getTemplateFormatters()).willReturn(templateFormatters);
given(internalResourceHolder.getRequestInterceptors()).willReturn(null);
given(internalResourceHolder.getResponseInterceptors()).willReturn(null);
given(internalResourceHolder.getSequenceHandlers()).willReturn(sequenceHandlers);
//WHEN
underTest.initializeTemporaryResourceHolder();
//THEN
verify(temporaryStubResourceHolder).setConditionCheckers(conditionCheckers);
verify(temporaryStubResourceHolder).setTemplateFormatters(templateFormatters);
verify(temporaryStubResourceHolder, BDDMockito.never()).setRequestInterceptors(null);
verify(temporaryStubResourceHolder, BDDMockito.never()).setResponseInterceptors(null);
verify(temporaryStubResourceHolder).setSequenceHandlers(sequenceHandlers);
}
}