/*
* Copyright (c) LinkedIn Corporation. All rights reserved. Licensed under the BSD-2 Clause license.
* See LICENSE in the project root for license information.
*/
package com.linkedin.flashback.matchrules;
import com.google.common.net.HttpHeaders;
import com.linkedin.flashback.serializable.RecordedHttpRequest;
import com.linkedin.flashback.serializable.RecordedStringHttpBody;
import java.util.HashMap;
import java.util.Map;
import org.testng.Assert;
import org.testng.annotations.Test;
/**
* @author shfeng
*/
public class MatchBodyTest {
@Test
public void testIsStringBodyMatch()
throws Exception {
RecordedStringHttpBody stringHttpBody1 = new RecordedStringHttpBody("abc");
RecordedStringHttpBody stringHttpBody2 = new RecordedStringHttpBody("abc");
RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest(null, null, null, stringHttpBody1);
RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest(null, null, null, stringHttpBody2);
MatchRule matchRule = new MatchBody();
Assert.assertTrue(matchRule.test(recordedHttpRequest1, recordedHttpRequest2));
}
@Test
public void testBothNullBodyMatch() {
RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest(null, null, null, null);
RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest(null, null, null, null);
MatchRule matchRule = new MatchBody();
Assert.assertTrue(matchRule.test(recordedHttpRequest1, recordedHttpRequest2));
}
@Test
public void testNullAndEmptyBodyMatch() {
RecordedStringHttpBody stringHttpBody2 = new RecordedStringHttpBody("");
RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest(null, null, null, null);
RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest(null, null, null, stringHttpBody2);
MatchRule matchRule = new MatchBody();
Assert.assertTrue(matchRule.test(recordedHttpRequest1, recordedHttpRequest2));
}
@Test
public void testNullAndNonEmptyBodyNotMatch() {
RecordedStringHttpBody stringHttpBody2 = new RecordedStringHttpBody("abc");
RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest(null, null, null, null);
RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest(null, null, null, stringHttpBody2);
MatchRule matchRule = new MatchBody();
Assert.assertFalse(matchRule.test(recordedHttpRequest1, recordedHttpRequest2));
}
@Test
public void testIsStringBodyNotMatch()
throws Exception {
RecordedStringHttpBody stringHttpBody1 = new RecordedStringHttpBody("abc");
RecordedStringHttpBody stringHttpBody2 = new RecordedStringHttpBody("abcd");
RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest(null, null, null, stringHttpBody1);
RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest(null, null, null, stringHttpBody2);
MatchRule matchRule = new MatchBody();
Assert.assertFalse(matchRule.test(recordedHttpRequest1, recordedHttpRequest2));
}
@Test
public void testIsStringBodyNotMatchWithDiffCharset()
throws Exception {
RecordedStringHttpBody stringHttpBody1 = new RecordedStringHttpBody("造字");
RecordedStringHttpBody stringHttpBody2 = new RecordedStringHttpBody("造字");
Map<String, String> headers1 = new HashMap<>();
headers1.put(HttpHeaders.CONTENT_TYPE, "text/html; charset=euc-kr");
Map<String, String> headers2 = new HashMap<>();
headers2.put(HttpHeaders.CONTENT_TYPE, "text/html; charset=big5");
RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest(null, null, headers1, stringHttpBody1);
RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest(null, null, headers2, stringHttpBody2);
MatchRule matchRule = new MatchBody();
Assert.assertFalse(matchRule.test(recordedHttpRequest1, recordedHttpRequest2));
}
}