/*
* Copyright 2013 undera.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.atlantbh.jmeter.plugins.jsonutils.jsonpathassertion;
import org.apache.jmeter.assertions.AssertionResult;
import org.apache.jmeter.samplers.SampleResult;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class JSONPathAssertionTest {
@Test
public void testGetJsonPath() {
System.out.println("getJsonPath");
JSONPathAssertion instance = new JSONPathAssertion();
String expResult = "";
String result = instance.getJsonPath();
assertEquals(expResult, result);
}
@Test
public void testSetJsonPath() {
System.out.println("setJsonPath");
String jsonPath = "";
JSONPathAssertion instance = new JSONPathAssertion();
instance.setJsonPath(jsonPath);
}
@Test
public void testGetExpectedValue() {
System.out.println("getExpectedValue");
JSONPathAssertion instance = new JSONPathAssertion();
String expResult = "";
String result = instance.getExpectedValue();
assertEquals(expResult, result);
}
@Test
public void testSetExpectedValue() {
System.out.println("setExpectedValue");
String expectedValue = "";
JSONPathAssertion instance = new JSONPathAssertion();
instance.setExpectedValue(expectedValue);
}
@Test
public void testSetJsonValidationBool() {
System.out.println("setJsonValidationBool");
JSONPathAssertion instance = new JSONPathAssertion();
instance.setJsonValidationBool(false);
}
@Test
public void testIsJsonValidationBool() {
System.out.println("isJsonValidationBool");
JSONPathAssertion instance = new JSONPathAssertion();
boolean result = instance.isJsonValidationBool();
assertEquals(false, result);
}
@Test
public void testGetResult_positive() {
System.out.println("getResult simple");
SampleResult samplerResult = new SampleResult();
samplerResult.setResponseData("{\"myval\": 123}".getBytes());
JSONPathAssertion instance = new JSONPathAssertion();
instance.setJsonPath("$.myval");
instance.setJsonValidationBool(true);
instance.setExpectedValue("123");
AssertionResult expResult = new AssertionResult("");
AssertionResult result = instance.getResult(samplerResult);
assertEquals(expResult.getName(), result.getName());
assertEquals(false, result.isFailure());
}
@Test
public void testGetResult_positive_regexp() {
System.out.println("getResult simple");
SampleResult samplerResult = new SampleResult();
samplerResult.setResponseData("{\"myval\": 123}".getBytes());
JSONPathAssertion instance = new JSONPathAssertion();
instance.setJsonPath("$.myval");
instance.setJsonValidationBool(true);
instance.setExpectedValue("(123|456)");
AssertionResult expResult = new AssertionResult("");
AssertionResult result = instance.getResult(samplerResult);
assertEquals(expResult.getName(), result.getName());
assertEquals(false, result.isFailure());
samplerResult.setResponseData("{\"myval\": 456}".getBytes());
AssertionResult result2 = instance.getResult(samplerResult);
assertEquals(false, result2.isFailure());
}
@Test
public void testGetResult_positive_invert() {
System.out.println("getResult simple");
SampleResult samplerResult = new SampleResult();
samplerResult.setResponseData("{\"myval\": 123}".getBytes());
JSONPathAssertion instance = new JSONPathAssertion();
instance.setJsonPath("$.myval");
instance.setJsonValidationBool(true);
instance.setExpectedValue("123");
instance.setInvert(true);
AssertionResult expResult = new AssertionResult("");
AssertionResult result = instance.getResult(samplerResult);
assertEquals(true, result.isFailure());
assertEquals(expResult.getName(), result.getName());
}
@Test
public void testGetResult_not_regexp() {
System.out.println("not regexp");
SampleResult samplerResult = new SampleResult();
samplerResult.setResponseData("{\"myval\": \"some complicated value\"}".getBytes());
JSONPathAssertion instance = new JSONPathAssertion();
instance.setJsonPath("$.myval");
instance.setJsonValidationBool(true);
instance.setExpectedValue("some.+");
AssertionResult result = instance.getResult(samplerResult);
assertEquals(false, result.isFailure());
instance.setIsRegex(false);
AssertionResult result2 = instance.getResult(samplerResult);
assertEquals(true, result2.isFailure());
}
@Test
public void testGetResult_negative() {
System.out.println("getResult simple");
SampleResult samplerResult = new SampleResult();
samplerResult.setResponseData("{\"myval\": 123}".getBytes());
JSONPathAssertion instance = new JSONPathAssertion();
instance.setJsonPath("$.myval");
instance.setJsonValidationBool(true);
instance.setExpectedValue("1234");
AssertionResult expResult = new AssertionResult("");
AssertionResult result = instance.getResult(samplerResult);
assertEquals(expResult.getName(), result.getName());
assertEquals(true, result.isFailure());
}
@Test
public void testGetResult_negative_invert() {
System.out.println("getResult simple");
SampleResult samplerResult = new SampleResult();
samplerResult.setResponseData("{\"myval\": 123}".getBytes());
JSONPathAssertion instance = new JSONPathAssertion();
instance.setJsonPath("$.myval");
instance.setJsonValidationBool(true);
instance.setExpectedValue("1234");
instance.setInvert(true);
AssertionResult expResult = new AssertionResult("");
AssertionResult result = instance.getResult(samplerResult);
assertEquals(false, result.isFailure());
assertEquals(expResult.getName(), result.getName());
}
@Test
public void testGetResult_null() {
System.out.println("getResult null");
SampleResult samplerResult = new SampleResult();
samplerResult.setResponseData("{\"myval\": null}".getBytes());
JSONPathAssertion instance = new JSONPathAssertion();
instance.setJsonPath("$.myval");
instance.setExpectNull(true);
instance.setJsonValidationBool(true);
AssertionResult expResult = new AssertionResult("");
AssertionResult result = instance.getResult(samplerResult);
assertEquals(expResult.getName(), result.getName());
assertEquals(false, result.isFailure());
}
@Test
public void testGetResult_null_not_found() {
System.out.println("getResult null");
SampleResult samplerResult = new SampleResult();
samplerResult.setResponseData("{\"myval\": 123}".getBytes());
JSONPathAssertion instance = new JSONPathAssertion();
instance.setJsonPath("$.myval");
instance.setExpectNull(true);
instance.setJsonValidationBool(true);
AssertionResult expResult = new AssertionResult("");
AssertionResult result = instance.getResult(samplerResult);
assertEquals(expResult.getName(), result.getName());
assertEquals(true, result.isFailure());
}
@Test
public void testGetResult_null_novalidate() {
System.out.println("getResult null novalidate");
SampleResult samplerResult = new SampleResult();
samplerResult.setResponseData("{\"myval\": null}".getBytes());
JSONPathAssertion instance = new JSONPathAssertion();
instance.setJsonPath("$.myval");
instance.setJsonValidationBool(false);
AssertionResult expResult = new AssertionResult("");
AssertionResult result = instance.getResult(samplerResult);
assertEquals(expResult.getName(), result.getName());
assertEquals(false, result.isFailure());
}
@Test
public void testGetResult_no_such_path() {
System.out.println("getResult notexist");
SampleResult samplerResult = new SampleResult();
samplerResult.setResponseData("{\"myval\": null}".getBytes());
JSONPathAssertion instance = new JSONPathAssertion();
instance.setJsonPath("$.notexist");
instance.setJsonValidationBool(false);
AssertionResult expResult = new AssertionResult("");
AssertionResult result = instance.getResult(samplerResult);
assertEquals(expResult.getName(), result.getName());
assertEquals(true, result.isFailure());
}
@Test
public void testGetResult_list_val() {
System.out.println("getResult list-val");
SampleResult samplerResult = new SampleResult();
samplerResult.setResponseData("{\"myval\": [{\"test\":1},{\"test\":2},{\"test\":3}]}".getBytes());
JSONPathAssertion instance = new JSONPathAssertion();
instance.setJsonPath("$.myval[*].test");
instance.setJsonValidationBool(true);
instance.setExpectedValue("2");
AssertionResult expResult = new AssertionResult("");
AssertionResult result = instance.getResult(samplerResult);
assertEquals(expResult.getName(), result.getName());
assertEquals(false, result.isFailure());
}
@Test
public void testGetResult_list_negative() {
System.out.println("getResult list-neg");
SampleResult samplerResult = new SampleResult();
samplerResult.setResponseData("{\"myval\": [{\"test\":1},{\"test\":2},{\"test\":3}]}".getBytes());
JSONPathAssertion instance = new JSONPathAssertion();
instance.setJsonPath("$.myval[*].test");
instance.setJsonValidationBool(true);
instance.setExpectedValue("5");
AssertionResult expResult = new AssertionResult("");
AssertionResult result = instance.getResult(samplerResult);
assertEquals(expResult.getName(), result.getName());
assertEquals(true, result.isFailure());
}
@Test
public void testGetResult_list_empty_novalidate() {
System.out.println("getResult list-empty");
SampleResult samplerResult = new SampleResult();
samplerResult.setResponseData("{\"myval\": []}".getBytes());
JSONPathAssertion instance = new JSONPathAssertion();
instance.setJsonPath("$.myval[*]");
instance.setJsonValidationBool(false);
AssertionResult expResult = new AssertionResult("");
AssertionResult result = instance.getResult(samplerResult);
assertEquals(expResult.getName(), result.getName());
assertEquals(false, result.isFailure());
}
@Test
public void testGetResult_list_empty_validate() {
System.out.println("getResult list-empty");
SampleResult samplerResult = new SampleResult();
samplerResult.setResponseData("{\"myval\": []}".getBytes());
JSONPathAssertion instance = new JSONPathAssertion();
instance.setJsonPath("$.myval");
instance.setJsonValidationBool(true);
instance.setExpectedValue("[]");
AssertionResult expResult = new AssertionResult("");
AssertionResult result = instance.getResult(samplerResult);
assertEquals(expResult.getName(), result.getName());
assertEquals(false, result.isFailure());
}
@Test
public void testGetResult_dict() {
System.out.println("getResult notexist");
SampleResult samplerResult = new SampleResult();
samplerResult.setResponseData("{\"myval\": {\"key\": \"val\"}}".getBytes());
JSONPathAssertion instance = new JSONPathAssertion();
instance.setJsonPath("$.myval");
instance.setJsonValidationBool(true);
instance.setExpectedValue("{\"key\":\"val\"}");
AssertionResult expResult = new AssertionResult("");
AssertionResult result = instance.getResult(samplerResult);
assertEquals(expResult.getName(), result.getName());
assertEquals(false, result.isFailure());
}
@Test
public void testGetResult_inverted_null() {
System.out.println("getResult notexist");
SampleResult samplerResult = new SampleResult();
samplerResult.setResponseData("{\"myval\": [{\"key\": null}]}".getBytes());
JSONPathAssertion instance = new JSONPathAssertion();
instance.setJsonPath("$.myval[*].key");
instance.setJsonValidationBool(true);
instance.setExpectNull(true);
instance.setInvert(true);
AssertionResult expResult = new AssertionResult("");
AssertionResult result = instance.getResult(samplerResult);
assertEquals(expResult.getName(), result.getName());
assertEquals(true, result.isFailure());
}
@Test
public void testGetResult_match_msg_problem() {
System.out.println("getResult notexist");
SampleResult samplerResult = new SampleResult();
String str = "{\"execution\":[{\"scenario\":{\"requests\":[{\"headers\":{\"headerkey\":\"header value\"}}]}}]}";
samplerResult.setResponseData(str.getBytes());
JSONPathAssertion instance = new JSONPathAssertion();
instance.setJsonPath("$.execution[0].scenario.requests[0].headers");
instance.setJsonValidationBool(true);
instance.setExpectNull(false);
instance.setExpectedValue("{headerkey=header value}");
instance.setInvert(false);
AssertionResult expResult = new AssertionResult("");
AssertionResult result = instance.getResult(samplerResult);
assertEquals(expResult.getName(), result.getName());
assertEquals(true, result.isFailure());
assertEquals("Value expected to match regexp '{headerkey=header value}', but it did not match: '{\"headerkey\":\"header value\"}'", result.getFailureMessage());
}
@Test
public void testGetResult_match_msg_problem2() {
SampleResult samplerResult = new SampleResult();
String str = "{\n" +
" \"code\":200,\n" +
" \"contact\":{\n" +
" \"id\":28071,\n" +
" \"description\":\"test description\",\n" +
" \"info\":{\n" +
" \"ngn_number\":[\n" +
" \"2003\",\n" +
" \"2004\"\n" +
" ]\n" +
" }\n" +
" }\n" +
"}";
samplerResult.setResponseData(str.getBytes());
JSONPathAssertion instance = new JSONPathAssertion();
instance.setJsonPath("$.contact.info.ngn_number");
instance.setJsonValidationBool(true);
instance.setExpectNull(false);
instance.setExpectedValue("[\"2003\",\"2004\"]");
instance.setInvert(false);
instance.setIsRegex(false);
AssertionResult expResult = new AssertionResult("");
AssertionResult result = instance.getResult(samplerResult);
assertEquals(expResult.getName(), result.getName());
assertEquals(false, result.isFailure());
}
@Test
public void testGetResultFloat() {
System.out.println("testGetResultFloat");
SampleResult samplerResult = new SampleResult();
samplerResult.setResponseData("{\"myval\": [{\"test\":0.0000123456789}]}".getBytes());
JSONPathAssertion instance = new JSONPathAssertion();
instance.setJsonPath("$.myval[*].test");
instance.setJsonValidationBool(true);
instance.setIsRegex(false);
instance.setExpectedValue("0.0000123456789");
AssertionResult expResult = new AssertionResult("");
AssertionResult result = instance.getResult(samplerResult);
assertEquals(expResult.getName(), result.getName());
assertEquals(false, result.isFailure());
}
}