/** * If found matched request, then return response accordingly. * Otherwise, return bad request. * * @return bad request if not matched request/response found in the scene. * */ private FullHttpResponse playBack() throws IOException { RecordedHttpRequest recordedHttpRequest = _clientRequestBuilder.build(); boolean found = _sceneAccessLayer.hasMatchRequest(recordedHttpRequest); if (!found) { if (LOG.isDebugEnabled()) { LOG.debug(_sceneAccessLayer.getMatchFailureDescription(recordedHttpRequest)); } return NoMatchResponseGenerator.generateNoMatchResponse(recordedHttpRequest); } RecordedHttpResponse recordedHttpResponse = _sceneAccessLayer.playback(recordedHttpRequest); return NettyHttpResponseMapper.from(recordedHttpResponse); } }
@Test(expectedExceptions = IllegalStateException.class, expectedExceptionsMessageRegExp = SceneAccessLayer.THE_SCENE_IS_NOT_READABLE) public void testPlaybackNotReadable() throws IOException { Scene scene = EasyMock.createStrictMock(Scene.class); EasyMock.expect(scene.isReadable()).andReturn(false); SceneWriter sceneWriter = EasyMock.createStrictMock(SceneWriter.class); MatchRule matchRule = EasyMock.createStrictMock(MatchRule.class); RecordedHttpRequest incomingHttpRequest = EasyMock.createStrictMock(RecordedHttpRequest.class); EasyMock.replay(scene); SceneAccessLayer sceneAccessLayer = new SceneAccessLayer(scene, sceneWriter, matchRule); sceneAccessLayer.playback(incomingHttpRequest); EasyMock.verify(scene); }
@Test(expectedExceptions = IllegalStateException.class, expectedExceptionsMessageRegExp = SceneAccessLayer.NO_MATCHING_RECORDING_FOUND) public void testPlaybackNoMatchRequest() throws IOException { Scene scene = EasyMock.createStrictMock(Scene.class); EasyMock.expect(scene.isReadable()).andReturn(true); EasyMock.expect(scene.isSequential()).andReturn(false); RecordedHttpExchange recordedHttpExchange1 = EasyMock.createStrictMock(RecordedHttpExchange.class); RecordedHttpExchange recordedHttpExchange2 = EasyMock.createStrictMock(RecordedHttpExchange.class); RecordedHttpRequest recordedHttpRequest1 = EasyMock.createStrictMock(RecordedHttpRequest.class); RecordedHttpRequest recordedHttpRequest2 = EasyMock.createStrictMock(RecordedHttpRequest.class); EasyMock.expect(recordedHttpExchange1.getRecordedHttpRequest()).andReturn(recordedHttpRequest1); EasyMock.expect(recordedHttpExchange2.getRecordedHttpRequest()).andReturn(recordedHttpRequest2); RecordedHttpRequest incomingHttpRequest = EasyMock.createStrictMock(RecordedHttpRequest.class); ArrayList<RecordedHttpExchange> recordedHttpExchangeArrayList = new ArrayList<>(); recordedHttpExchangeArrayList.add(recordedHttpExchange1); recordedHttpExchangeArrayList.add(recordedHttpExchange2); EasyMock.expect(scene.getRecordedHttpExchangeList()).andReturn(recordedHttpExchangeArrayList); SceneWriter sceneWriter = EasyMock.createStrictMock(SceneWriter.class); MatchRule matchRule = EasyMock.createStrictMock(MatchRule.class); EasyMock.expect(matchRule.test(incomingHttpRequest, recordedHttpRequest1)).andReturn(false); EasyMock.expect(matchRule.test(incomingHttpRequest, recordedHttpRequest2)).andReturn(false); EasyMock.replay(scene, recordedHttpExchange1, recordedHttpExchange2, matchRule); SceneAccessLayer sceneAccessLayer = new SceneAccessLayer(scene, sceneWriter, matchRule); sceneAccessLayer.playback(incomingHttpRequest); EasyMock.verify(scene, recordedHttpExchange1, recordedHttpExchange2, matchRule); }
@Test public void testPlayback() throws IOException { Scene scene = EasyMock.createMock(Scene.class); EasyMock.expect(scene.isReadable()).andReturn(true).anyTimes(); EasyMock.expect(scene.isSequential()).andReturn(false).anyTimes(); SceneWriter sceneWriter = EasyMock.createStrictMock(SceneWriter.class); RecordedHttpExchange recordedHttpExchange1 = EasyMock.createStrictMock(RecordedHttpExchange.class); RecordedHttpExchange recordedHttpExchange2 = EasyMock.createStrictMock(RecordedHttpExchange.class); RecordedHttpRequest recordedHttpRequest1 = EasyMock.createStrictMock(RecordedHttpRequest.class); RecordedHttpRequest recordedHttpRequest2 = EasyMock.createStrictMock(RecordedHttpRequest.class); RecordedHttpResponse recordedHttpResponse1 = EasyMock.createStrictMock(RecordedHttpResponse.class); RecordedHttpResponse recordedHttpResponse2 = EasyMock.createStrictMock(RecordedHttpResponse.class); EasyMock.expect(recordedHttpExchange1.getRecordedHttpRequest()).andReturn(recordedHttpRequest1); EasyMock.expect(recordedHttpExchange2.getRecordedHttpRequest()).andReturn(recordedHttpRequest2); EasyMock.expect(recordedHttpExchange1.getRecordedHttpResponse()).andReturn(recordedHttpResponse1); EasyMock.expect(recordedHttpExchange2.getRecordedHttpResponse()).andReturn(recordedHttpResponse2); RecordedHttpRequest incomingHttpRequest = EasyMock.createStrictMock(RecordedHttpRequest.class); ArrayList<RecordedHttpExchange> recordedHttpExchangeArrayList = new ArrayList<>(); recordedHttpExchangeArrayList.add(recordedHttpExchange1); recordedHttpExchangeArrayList.add(recordedHttpExchange2); EasyMock.expect(scene.getRecordedHttpExchangeList()).andReturn(recordedHttpExchangeArrayList).times(2); MatchRule matchRule = EasyMock.createStrictMock(MatchRule.class); EasyMock.expect(matchRule.test(incomingHttpRequest, recordedHttpRequest1)).andReturn(true); EasyMock.replay(scene, recordedHttpExchange1, recordedHttpRequest1, matchRule); SceneAccessLayer sceneAccessLayer = new SceneAccessLayer(scene, sceneWriter, matchRule); Assert.assertEquals(sceneAccessLayer.playback(incomingHttpRequest), recordedHttpResponse1); EasyMock.verify(scene, recordedHttpExchange1, recordedHttpRequest1, matchRule); }