diff --git a/playtest-gauge-rest/specs/http/response/json/booleans.spec b/playtest-gauge-rest/specs/http/response/json/booleans.spec index 474baf2..4ecb8ec 100644 --- a/playtest-gauge-rest/specs/http/response/json/booleans.spec +++ b/playtest-gauge-rest/specs/http/response/json/booleans.spec @@ -7,6 +7,13 @@ * レスポンスのJSONの"$.key2[0]"が真偽値の"false"である * レスポンスのJSONの"$.key2[0]"が真偽値のfalseである +## JSON Pathで指定したオブジェクトが一致しない +* レスポンスボディとしてシナリオデータストアに"{ \"key1\": true, \"key2\": [ false ] }"を保存する +* レスポンスのJSONの"$.key1"が真偽値の"false"でない +* レスポンスのJSONの"$.key1"が真偽値のfalseでない +* レスポンスのJSONの"$.key2[0]"が真偽値の"true"でない +* レスポンスのJSONの"$.key2[0]"が真偽値のtrueでない + ## 配列内において存在(無) * レスポンスボディとしてシナリオデータストアに"{\"key1\":[{\"id\":\"a\",\"key3\":false}, {\"id\":\"b\",\"key3\": true }, {\"id\":\"c\",\"key3\":true}]}"を保存する * レスポンスのJSONの"$.key1"の配列の、UniqueKey"id"の値が"b"である要素の"key3"が、真偽値の"true"である diff --git a/playtest-gauge-rest/specs/http/response/json/doubles.spec b/playtest-gauge-rest/specs/http/response/json/doubles.spec index cfa9328..04e8835 100644 --- a/playtest-gauge-rest/specs/http/response/json/doubles.spec +++ b/playtest-gauge-rest/specs/http/response/json/doubles.spec @@ -5,6 +5,11 @@ * レスポンスのJSONの"$.key1"が小数の"10.00"である * レスポンスのJSONの"$.key2[0]"が小数の"0.01"である +## JSON Pathで指定したオブジェクトが一致しない +* レスポンスボディとしてシナリオデータストアに"{ \"key1\": 10.00, \"key2\": [ 0.01 ] }"を保存する +* レスポンスのJSONの"$.key1"が小数の"0.01"でない +* レスポンスのJSONの"$.key2[0]"が小数の"10.00"でない + ## JSON Pathで指定した配列を条件で絞った1要素 * レスポンスボディとしてシナリオデータストアに"{\"key1\":[{\"id\":\"a\",\"key3\":1.0}, {\"id\":\"b\",\"key3\": 2.0 }, {\"id\":\"c\",\"key3\":3.0}]}"を保存する * レスポンスのJSONの"$.key1"の配列の、UniqueKey"id"の値が"b"である要素の"key3"が、小数値の"2.0"である diff --git a/playtest-gauge-rest/specs/http/response/json/integers.spec b/playtest-gauge-rest/specs/http/response/json/integers.spec index 6631415..ea3c777 100644 --- a/playtest-gauge-rest/specs/http/response/json/integers.spec +++ b/playtest-gauge-rest/specs/http/response/json/integers.spec @@ -5,6 +5,11 @@ * レスポンスのJSONの"$.key1"が整数の"0"である * レスポンスのJSONの"$.key2[0]"が整数の"10"である +## JSON Pathで指定したオブジェクトが一致しない +* レスポンスボディとしてシナリオデータストアに"{ \"key1\": 0, \"key2\": [ 10 ] }"を保存する +* レスポンスのJSONの"$.key1"が整数の"10"でない +* レスポンスのJSONの"$.key2[0]"が整数の"0"でない + ## JSON Pathで指定した配列を条件で絞った1要素 * レスポンスボディとしてシナリオデータストアに"{\"key1\":[{\"id\":\"a\",\"key3\":1}, {\"id\":\"b\",\"key3\": 2 }, {\"id\":\"c\",\"key3\":3}]}"を保存する * レスポンスのJSONの"$.key1"の配列の、UniqueKey"id"の値が"b"である要素の"key3"が、整数値の"2"である diff --git a/playtest-gauge-rest/specs/http/response/json/regex.spec b/playtest-gauge-rest/specs/http/response/json/regex.spec index aed82d7..9bcf405 100644 --- a/playtest-gauge-rest/specs/http/response/json/regex.spec +++ b/playtest-gauge-rest/specs/http/response/json/regex.spec @@ -6,3 +6,7 @@ * レスポンスのJSONの"$.key2.key3"が"^[0-9a-zA-Z_.+-]*@+[a-zA-Z0-9.]*"である * レスポンスのJSONの"$.key2.key3"が".+"である * レスポンスのJSONの"$.key4"が".*"である + +## JSON Pathで指定したオブジェクトが一致しない +* レスポンスボディとしてシナリオデータストアに"{ \"key1\": \"09012345678\" }"を保存する +* レスポンスのJSONの"$.key1"が"[0-9]{12}"でない diff --git a/playtest-gauge-rest/specs/http/response/json/strings.spec b/playtest-gauge-rest/specs/http/response/json/strings.spec index 11c80a3..5416566 100644 --- a/playtest-gauge-rest/specs/http/response/json/strings.spec +++ b/playtest-gauge-rest/specs/http/response/json/strings.spec @@ -5,6 +5,11 @@ * レスポンスのJSONの"$.key1"が文字列の"value1"である * レスポンスのJSONの"$.key2[0]"が文字列の"value2"である +## JSON Pathで指定したオブジェクトが一致しない +* レスポンスボディとしてシナリオデータストアに"{ \"key1\": \"value1\", \"key2\": [ \"value2\" ] }"を保存する +* レスポンスのJSONの"$.key1"が文字列の"value2"でない +* レスポンスのJSONの"$.key2[0]"が文字列の"value1"でない + ## JSON Pathで指定した配列を条件で絞った1オブジェクト * レスポンスボディとしてシナリオデータストアに"{\"key1\":[{\"id\":\"a\",\"key3\":\"x\"}, {\"id\":\"b\",\"key3\": \"y\" }, {\"id\":\"c\",\"key3\":\"z\"}]}"を保存する * レスポンスのJSONの"$.key1"の配列の、UniqueKey"id"の値が"b"である要素の"key3"が、文字列の"y"である diff --git a/playtest-gauge-rest/src/main/kotlin/com/uzabase/playtest/gauge/rest/json/JsonBooleanStep.kt b/playtest-gauge-rest/src/main/kotlin/com/uzabase/playtest/gauge/rest/json/JsonBooleanStep.kt index 8f85e49..fdfb59b 100644 --- a/playtest-gauge-rest/src/main/kotlin/com/uzabase/playtest/gauge/rest/json/JsonBooleanStep.kt +++ b/playtest-gauge-rest/src/main/kotlin/com/uzabase/playtest/gauge/rest/json/JsonBooleanStep.kt @@ -4,6 +4,7 @@ import com.thoughtworks.gauge.Step import com.uzabase.playtest.gauge.rest.DataStore import com.uzabase.playtest.json.JsonNode import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertNotEquals class JsonBooleanStep { @Step("レスポンスのJSONのが真偽値のである") @@ -13,6 +14,13 @@ class JsonBooleanStep { assertEquals(expected, actual) } + @Step("レスポンスのJSONのが真偽値のでない") + fun assertNotEquals(jsonPath: String, expected: Boolean) { + val json = DataStore.loadResponseBodyFromScenario().string + val actual = JsonNode.of(json).get(jsonPath) + assertNotEquals(expected, actual) + } + @Step("レスポンスのJSONのが真偽値のtrueである") fun assertTrue(jsonPath: String) { val json = DataStore.loadResponseBodyFromScenario().string @@ -20,6 +28,13 @@ class JsonBooleanStep { assertEquals(true, actual) } + @Step("レスポンスのJSONのが真偽値のtrueでない") + fun assertNotTrue(jsonPath: String) { + val json = DataStore.loadResponseBodyFromScenario().string + val actual = JsonNode.of(json).get(jsonPath) + assertNotEquals(true, actual) + } + @Step("レスポンスのJSONのが真偽値のfalseである") fun assertFalse(jsonPath: String) { val json = DataStore.loadResponseBodyFromScenario().string @@ -27,6 +42,13 @@ class JsonBooleanStep { assertEquals(false, actual) } + @Step("レスポンスのJSONのが真偽値のfalseでない") + fun assertNotFalse(jsonPath: String) { + val json = DataStore.loadResponseBodyFromScenario().string + val actual = JsonNode.of(json).get(jsonPath) + assertNotEquals(false, actual) + } + @Step("レスポンスのJSONのの配列の、UniqueKeyの値がである要素のが、真偽値のである") fun assertEqualsInUniqueObject( jsonPath: String, diff --git a/playtest-gauge-rest/src/main/kotlin/com/uzabase/playtest/gauge/rest/json/JsonDoubleStep.kt b/playtest-gauge-rest/src/main/kotlin/com/uzabase/playtest/gauge/rest/json/JsonDoubleStep.kt index d45f605..3eb1873 100644 --- a/playtest-gauge-rest/src/main/kotlin/com/uzabase/playtest/gauge/rest/json/JsonDoubleStep.kt +++ b/playtest-gauge-rest/src/main/kotlin/com/uzabase/playtest/gauge/rest/json/JsonDoubleStep.kt @@ -13,6 +13,13 @@ class JsonDoubleStep { assertEquals(expected, actual) } + @Step("レスポンスのJSONのが小数のでない") + fun assertNotEquals(jsonPath: String, expected: Double) { + val json = DataStore.loadResponseBodyFromScenario().string + val actual = JsonNode.of(json).get(jsonPath) + assertNotEquals(expected, actual) + } + @Step("レスポンスのJSONのの配列の、UniqueKeyの値がである要素のが、小数値のである") fun assertEqualsInUniqueObject(jsonPath: String, uniqueKey: String, filterValue: String, key: String, expected: Double) { val json = DataStore.loadResponseBodyFromScenario().string diff --git a/playtest-gauge-rest/src/main/kotlin/com/uzabase/playtest/gauge/rest/json/JsonIntegerStep.kt b/playtest-gauge-rest/src/main/kotlin/com/uzabase/playtest/gauge/rest/json/JsonIntegerStep.kt index 8252627..2b2beab 100644 --- a/playtest-gauge-rest/src/main/kotlin/com/uzabase/playtest/gauge/rest/json/JsonIntegerStep.kt +++ b/playtest-gauge-rest/src/main/kotlin/com/uzabase/playtest/gauge/rest/json/JsonIntegerStep.kt @@ -13,6 +13,13 @@ class JsonIntegerStep { assertEquals(expected, actual) } + @Step("レスポンスのJSONのが整数のでない") + fun assertNotEquals(jsonPath: String, expected: Int) { + val json = DataStore.loadResponseBodyFromScenario().string + val actual = JsonNode.of(json).get(jsonPath) + assertNotEquals(expected, actual) + } + @Step("レスポンスのJSONのの配列の、UniqueKeyの値がである要素のが、整数値のである") fun assertEqualsInUniqueObject(jsonPath: String, uniqueKey: String, filterValue: String, key: String, expected: Int) { val json = DataStore.loadResponseBodyFromScenario().string diff --git a/playtest-gauge-rest/src/main/kotlin/com/uzabase/playtest/gauge/rest/json/JsonRegexStep.kt b/playtest-gauge-rest/src/main/kotlin/com/uzabase/playtest/gauge/rest/json/JsonRegexStep.kt index b59081a..3a1b63c 100644 --- a/playtest-gauge-rest/src/main/kotlin/com/uzabase/playtest/gauge/rest/json/JsonRegexStep.kt +++ b/playtest-gauge-rest/src/main/kotlin/com/uzabase/playtest/gauge/rest/json/JsonRegexStep.kt @@ -3,6 +3,7 @@ package com.uzabase.playtest.gauge.rest.json import com.thoughtworks.gauge.Step import com.uzabase.playtest.gauge.rest.DataStore import com.uzabase.playtest.json.JsonNode +import org.junit.jupiter.api.Assertions.assertFalse import kotlin.test.assertTrue @@ -16,4 +17,14 @@ class JsonRegexStep { assertTrue(regex.matches(this!!)) } } + + @Step("レスポンスのJSONのでない") + fun assertRegexNotMatch(jsonPath: String, pattern: String) { + val regex = Regex(pattern) + DataStore.loadResponseBodyFromScenario().string.let { + JsonNode.of(it).getValue(jsonPath) + }.run { + assertFalse(regex.matches(this!!)) + } + } } \ No newline at end of file diff --git a/playtest-gauge-rest/src/main/kotlin/com/uzabase/playtest/gauge/rest/json/JsonStringStep.kt b/playtest-gauge-rest/src/main/kotlin/com/uzabase/playtest/gauge/rest/json/JsonStringStep.kt index 708b816..fc0d656 100644 --- a/playtest-gauge-rest/src/main/kotlin/com/uzabase/playtest/gauge/rest/json/JsonStringStep.kt +++ b/playtest-gauge-rest/src/main/kotlin/com/uzabase/playtest/gauge/rest/json/JsonStringStep.kt @@ -13,6 +13,13 @@ class JsonStringStep { assertEquals(expected, actual) } + @Step("レスポンスのJSONのが文字列のでない") + fun assertNotEquals(jsonPath: String, expected: String) { + val json = DataStore.loadResponseBodyFromScenario().string + val actual = JsonNode.of(json).get(jsonPath) + assertNotEquals(expected, actual) + } + @Step("レスポンスのJSONのの配列の、UniqueKeyの値がである要素のが、文字列のである") fun assertEqualsInUniqueObject(jsonPath: String, uniqueKey: String, filterValue: String, key: String, expected: String) { val json = DataStore.loadResponseBodyFromScenario().string