/** * 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 public void testHasMatchRequest() throws URISyntaxException, IOException { Scene scene = EasyMock.createStrictMock(Scene.class); SceneWriter sceneWriter = EasyMock.createStrictMock(SceneWriter.class); EasyMock.expect(scene.isSequential()).andReturn(false); RecordedHttpExchange recordedHttpExchange1 = EasyMock.createStrictMock(RecordedHttpExchange.class); RecordedHttpExchange recordedHttpExchange2 = EasyMock.createStrictMock(RecordedHttpExchange.class); RecordedHttpRequest recordedHttpRequest1 = EasyMock.createStrictMock(RecordedHttpRequest.class); EasyMock.expect(recordedHttpExchange1.getRecordedHttpRequest()).andReturn(recordedHttpRequest1); RecordedHttpRequest incomingHttpRequest = EasyMock.createStrictMock(RecordedHttpRequest.class); ArrayList<RecordedHttpExchange> recordedHttpExchangeArrayList = new ArrayList<>(); recordedHttpExchangeArrayList.add(recordedHttpExchange1); recordedHttpExchangeArrayList.add(recordedHttpExchange2); EasyMock.expect(scene.getRecordedHttpExchangeList()).andReturn(recordedHttpExchangeArrayList); MatchRule matchRule = EasyMock.createStrictMock(MatchRule.class); EasyMock.expect(matchRule.test(incomingHttpRequest, recordedHttpRequest1)).andReturn(true); EasyMock.replay(scene, recordedHttpExchange1, recordedHttpRequest1, incomingHttpRequest, matchRule); SceneAccessLayer sceneAccessLayer = new SceneAccessLayer(scene, sceneWriter, matchRule); Assert.assertTrue(sceneAccessLayer.hasMatchRequest(incomingHttpRequest)); EasyMock.verify(scene, recordedHttpExchange1, recordedHttpRequest1, incomingHttpRequest, matchRule); }
Assert.assertTrue(sceneAccessLayer.hasMatchRequest(incomingHttpRequest1)); Assert.assertFalse(sceneAccessLayer.hasMatchRequest(incomingHttpRequest2)); Assert.assertFalse(sceneAccessLayer.hasMatchRequest(incomingHttpRequest1)); Assert.assertTrue(sceneAccessLayer.hasMatchRequest(incomingHttpRequest2)); Assert.assertEquals(sceneAccessLayer.playback(incomingHttpRequest2), recordedHttpResponse2);
@Test public void testHasNoMatchRequest() throws URISyntaxException, IOException { Scene scene = EasyMock.createStrictMock(Scene.class); EasyMock.expect(scene.isSequential()).andReturn(false); 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); 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); 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, recordedHttpRequest1, recordedHttpRequest2, incomingHttpRequest, matchRule); SceneAccessLayer sceneAccessLayer = new SceneAccessLayer(scene, sceneWriter, matchRule); Assert.assertFalse(sceneAccessLayer.hasMatchRequest(incomingHttpRequest)); EasyMock.verify(scene, recordedHttpExchange1, recordedHttpExchange2, recordedHttpRequest1, recordedHttpRequest2, incomingHttpRequest, matchRule); }