package com.thoughtworks.winstonwolfe.script;
import com.thoughtworks.winstonwolfe.datasource.DataSource;
import com.thoughtworks.winstonwolfe.endpoint.EndPointFactory;
import com.thoughtworks.winstonwolfe.endpoint.ServiceEndPoint;
import com.thoughtworks.winstonwolfe.validators.ResponseValidator;
import com.thoughtworks.winstonwolfe.validators.ValidatorFactory;
import com.thoughtworks.winstonwolfe.validators.ValidationResults;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
public class ScriptTest {
private Script script;
private ResponseValidator validator;
private DataSource actualResponseDataSource;
private ServiceEndPoint endPoint;
private DataSource requestDataSource;
private ValidationResults validationResults;
@Before
public void setup() throws Exception {
actualResponseDataSource = mock(DataSource.class);
EndPointFactory endPointFactory = mock(EndPointFactory.class);
endPoint = mock(ServiceEndPoint.class);
when(endPointFactory.buildEndPoint()).thenReturn(endPoint);
when(endPoint.send(any(DataSource.class))).thenReturn(actualResponseDataSource);
ValidatorFactory responseValidatorFactory = mock(ValidatorFactory.class);
validator = mock(ResponseValidator.class);
when(responseValidatorFactory.buildValidator()).thenReturn(validator);
validationResults = mock(ValidationResults.class);
when(validator.validateAgainst(any(DataSource.class))).thenReturn(validationResults);
requestDataSource = mock(DataSource.class);
script = new Script(endPointFactory, requestDataSource, responseValidatorFactory);
}
@Test
public void shouldSendTheRequestToTheEndPoint() throws Exception {
script.run();
verify(endPoint).send(requestDataSource);
}
@Test
public void shouldValidateTheResponse() throws Exception {
script.run();
verify(validator).validateAgainst(actualResponseDataSource);
}
@Test
public void shouldCheckTheReponsePassedValidation() throws Exception {
script.run();
verify(validationResults).assertSuccess();
}
}