private RecordedHttpExchange createHttpExchange() throws IOException { _jsonParser.nextToken(); // UPDATETIME FIELD_NAME validateRequiredField(SceneSerializationConstant.SCENE_TAG_UPDATE_TIME); _jsonParser.nextToken(); // UPDATETIME VALUE_STRING Date date = new Date(_jsonParser.getValueAsString()); RecordedHttpRequest recordedHttpRequest = createHttpRequest(); RecordedHttpResponse recordedHttpResponse = createHttpResponse(); skipEndObject(); // HTTPEXCHANGE return new RecordedHttpExchange(recordedHttpRequest, recordedHttpResponse, date); }
/** * Record request and response to the scene. Updates will be performed in-memory and will be written to disk * when flush() is called, or when the Scene is changed. * @param recordedHttpRequest http request from client * @param recordedHttpResponse http response from upstream service * * */ public void record(RecordedHttpRequest recordedHttpRequest, RecordedHttpResponse recordedHttpResponse) { List<RecordedHttpExchange> recordedHttpExchangeList = _scene.getRecordedHttpExchangeList(); RecordedHttpExchange recordedHttpExchange = new RecordedHttpExchange(recordedHttpRequest, recordedHttpResponse, new Date()); if (!_scene.isSequential()) { int position = findMatchRequest(recordedHttpRequest); if (position >= 0) { recordedHttpExchangeList.set(position, recordedHttpExchange); } else { recordedHttpExchangeList.add(recordedHttpExchange); } } else { recordedHttpExchangeList.add(recordedHttpExchange); } _dirty = true; }
static Scene getMockSceneWithoutBodyAndHeader() throws URISyntaxException { RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest("GET", new URI("https://www.google.com"), null, null); RecordedHttpResponse recordedHttpResponse1 = new RecordedHttpResponse(200, null, null); RecordedHttpExchange recordedHttpExchange1 = new RecordedHttpExchange(recordedHttpRequest1, recordedHttpResponse1, new Date("2 Oct 2015 21:04:49 GMT")); RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest("GET", new URI("https://www.yahoo.com"), null, null); byte[] bytes = {1, 2, 3, 4, 5}; RecordedHttpResponse recordedHttpResponse2 = new RecordedHttpResponse(200, null, null); RecordedHttpExchange recordedHttpExchange2 = new RecordedHttpExchange(recordedHttpRequest2, recordedHttpResponse2, new Date("2 Oct 2015 21:04:49 GMT")); List<RecordedHttpExchange> recordedHttpExchangeList = new ArrayList<>(); recordedHttpExchangeList.add(recordedHttpExchange1); recordedHttpExchangeList.add(recordedHttpExchange2); return new Scene("testing", null, ".", recordedHttpExchangeList); }
@Test public void testCreateSceneExistInSequentialRecordMode() throws Exception { Scene expectedScene = EasyMock.createStrictMock(Scene.class); List<RecordedHttpExchange> recordedHttpExchanges = new ArrayList<>(); Date now = new Date(); recordedHttpExchanges.add(new RecordedHttpExchange(null, null, now)); EasyMock.expect(expectedScene.getRecordedHttpExchangeList()).andReturn(recordedHttpExchanges); EasyMock.replay(expectedScene); Scene result = runTestGetResult(SceneMode.SEQUENTIAL_RECORD, expectedScene); Assert.assertNotNull(result); Assert.assertEquals(result.getName(), NAME); Assert.assertEquals(result.getSceneRoot(), ROOT); Assert.assertFalse(result.isReadable()); // Creating a Scene in sequential record mode should clear the list of exchanges to allow for re-recording Assert.assertEquals(result.getRecordedHttpExchangeList().size(), 0); }
static Scene getMockSceneWithoutBody() throws URISyntaxException { Multimap<String, String> requestHeaders1 = LinkedHashMultimap.create(); requestHeaders1.put("request-header1", "value1"); requestHeaders1.put("request-header2", "value2, value3, value4"); Multimap<String, String> responseHeaders1 = LinkedHashMultimap.create(); responseHeaders1.put("response-header1", "value1"); responseHeaders1.put("response-header2", "value2, value3, value4"); RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest("GET", new URI("https://www.google.com"), requestHeaders1, null); RecordedHttpResponse recordedHttpResponse1 = new RecordedHttpResponse(200, responseHeaders1, null); RecordedHttpExchange recordedHttpExchange1 = new RecordedHttpExchange(recordedHttpRequest1, recordedHttpResponse1, new Date("2 Oct 2015 21:04:49 GMT")); Multimap<String, String> requestHeaders2 = LinkedHashMultimap.create(); requestHeaders2.put("request-header11", "value11"); requestHeaders2.put("request-header12", "value12, value13, value14"); Multimap<String, String> responseHeaders2 = LinkedHashMultimap.create(); responseHeaders2.put("response-header11", "value11"); responseHeaders2.put("response-header12", "value21, value31, value41"); RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest("GET", new URI("https://www.yahoo.com"), requestHeaders2, null); byte[] bytes = {1, 2, 3, 4, 5}; RecordedHttpResponse recordedHttpResponse2 = new RecordedHttpResponse(200, responseHeaders2, null); RecordedHttpExchange recordedHttpExchange2 = new RecordedHttpExchange(recordedHttpRequest2, recordedHttpResponse2, new Date("2 Oct 2015 21:04:49 GMT")); List<RecordedHttpExchange> recordedHttpExchangeList = new ArrayList<>(); recordedHttpExchangeList.add(recordedHttpExchange1); recordedHttpExchangeList.add(recordedHttpExchange2); return new Scene("testing", null, ".", recordedHttpExchangeList); }
@Test public void testCreateSceneExistInPlaybackMode() throws Exception { Scene expectedScene = EasyMock.createStrictMock(Scene.class); List<RecordedHttpExchange> recordedHttpExchanges = new ArrayList<>(); Date now = new Date(); recordedHttpExchanges.add(new RecordedHttpExchange(null, null, now)); EasyMock.expect(expectedScene.getRecordedHttpExchangeList()).andReturn(recordedHttpExchanges); EasyMock.replay(expectedScene); Scene result = runTestGetResult(SceneMode.PLAYBACK, expectedScene); Assert.assertNotNull(result); Assert.assertEquals(result.getName(), NAME); Assert.assertEquals(result.getSceneRoot(), ROOT); Assert.assertTrue(result.isReadable()); Assert.assertEquals(result.getRecordedHttpExchangeList().get(0).getUpdateTime(), now); }
@Test public void testCreateSceneExistInRecordMode() throws Exception { Scene expectedScene = EasyMock.createStrictMock(Scene.class); List<RecordedHttpExchange> recordedHttpExchanges = new ArrayList<>(); Date now = new Date(); recordedHttpExchanges.add(new RecordedHttpExchange(null, null, now)); EasyMock.expect(expectedScene.getRecordedHttpExchangeList()).andReturn(recordedHttpExchanges); EasyMock.replay(expectedScene); Scene result = runTestGetResult(SceneMode.RECORD, expectedScene); Assert.assertNotNull(result); Assert.assertEquals(result.getName(), NAME); Assert.assertEquals(result.getSceneRoot(), ROOT); Assert.assertFalse(result.isReadable()); Assert.assertEquals(result.getRecordedHttpExchangeList().get(0).getUpdateTime(), now); }
new RecordedHttpResponse(200, responseHeaders1, new RecordedStringHttpBody("Hello world response is awesome")); RecordedHttpExchange recordedHttpExchange1 = new RecordedHttpExchange(recordedHttpRequest1, recordedHttpResponse1, new Date("2 Oct 2015 21:04:49 GMT")); new RecordedHttpResponse(200, responseHeaders2, new RecordedByteHttpBody(bytes)); RecordedHttpExchange recordedHttpExchange2 = new RecordedHttpExchange(recordedHttpRequest2, recordedHttpResponse2, new Date("2 Oct 2015 21:04:49 GMT"));
static Scene getMockSceneWithoutHeaders() throws URISyntaxException { RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest("GET", new URI("https://www.google.com"), null, new RecordedStringHttpBody("Hello world request is awesome")); RecordedHttpResponse recordedHttpResponse1 = new RecordedHttpResponse(200, null, new RecordedStringHttpBody("Hello world response is awesome")); RecordedHttpExchange recordedHttpExchange1 = new RecordedHttpExchange(recordedHttpRequest1, recordedHttpResponse1, new Date("2 Oct 2015 21:04:49 GMT")); RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest("GET", new URI("https://www.yahoo.com"), null, new RecordedStringHttpBody("Hello world request is awesome")); byte[] bytes = {1, 2, 3, 4, 5}; RecordedHttpResponse recordedHttpResponse2 = new RecordedHttpResponse(200, null, new RecordedByteHttpBody(bytes)); RecordedHttpExchange recordedHttpExchange2 = new RecordedHttpExchange(recordedHttpRequest2, recordedHttpResponse2, new Date("2 Oct 2015 21:04:49 GMT")); List<RecordedHttpExchange> recordedHttpExchangeList = new ArrayList<>(); recordedHttpExchangeList.add(recordedHttpExchange1); recordedHttpExchangeList.add(recordedHttpExchange2); return new Scene("testing", null, ".", recordedHttpExchangeList); }