|
5 | 5 |
|
6 | 6 | import com.retailsvc.http.ValidationException; |
7 | 7 | import com.retailsvc.http.spec.schema.AllOfSchema; |
| 8 | +import com.retailsvc.http.spec.schema.AlwaysSchema; |
8 | 9 | import com.retailsvc.http.spec.schema.AnyOfSchema; |
9 | 10 | import com.retailsvc.http.spec.schema.BooleanSchema; |
| 11 | +import com.retailsvc.http.spec.schema.NeverSchema; |
10 | 12 | import com.retailsvc.http.spec.schema.NotSchema; |
11 | 13 | import com.retailsvc.http.spec.schema.NullSchema; |
12 | 14 | import com.retailsvc.http.spec.schema.OneOfSchema; |
13 | 15 | import com.retailsvc.http.spec.schema.StringSchema; |
14 | 16 | import com.retailsvc.http.spec.schema.TypeName; |
15 | 17 | import java.util.List; |
| 18 | +import java.util.Map; |
16 | 19 | import java.util.Set; |
17 | 20 | import org.junit.jupiter.api.Test; |
18 | 21 |
|
@@ -172,4 +175,52 @@ void anyOfMatchesNullViaNullSchema() { |
172 | 175 | var schema = new AnyOfSchema(List.of(stringSchema(1, null), new NullSchema())); |
173 | 176 | v.validate(null, schema, "/v"); |
174 | 177 | } |
| 178 | + |
| 179 | + @Test |
| 180 | + void alwaysSchemaAcceptsString() { |
| 181 | + v.validate("anything", new AlwaysSchema(), "/v"); |
| 182 | + } |
| 183 | + |
| 184 | + @Test |
| 185 | + void alwaysSchemaAcceptsInteger() { |
| 186 | + v.validate(42, new AlwaysSchema(), "/v"); |
| 187 | + } |
| 188 | + |
| 189 | + @Test |
| 190 | + void alwaysSchemaAcceptsObject() { |
| 191 | + v.validate(Map.of("a", 1), new AlwaysSchema(), "/v"); |
| 192 | + } |
| 193 | + |
| 194 | + @Test |
| 195 | + void alwaysSchemaAcceptsNull() { |
| 196 | + v.validate(null, new AlwaysSchema(), "/v"); |
| 197 | + } |
| 198 | + |
| 199 | + @Test |
| 200 | + void neverSchemaRejectsString() { |
| 201 | + assertThatThrownBy(() -> v.validate("anything", new NeverSchema(), "/v")) |
| 202 | + .isInstanceOf(ValidationException.class) |
| 203 | + .satisfies( |
| 204 | + t -> { |
| 205 | + var err = ((ValidationException) t).error(); |
| 206 | + assertThat(err.keyword()).isEqualTo("false"); |
| 207 | + assertThat(err.message()).contains("rejects all values"); |
| 208 | + }); |
| 209 | + } |
| 210 | + |
| 211 | + @Test |
| 212 | + void neverSchemaRejectsInteger() { |
| 213 | + assertThatThrownBy(() -> v.validate(42, new NeverSchema(), "/v")) |
| 214 | + .isInstanceOf(ValidationException.class) |
| 215 | + .extracting(t -> ((ValidationException) t).error().keyword()) |
| 216 | + .isEqualTo("false"); |
| 217 | + } |
| 218 | + |
| 219 | + @Test |
| 220 | + void neverSchemaRejectsNull() { |
| 221 | + assertThatThrownBy(() -> v.validate(null, new NeverSchema(), "/v")) |
| 222 | + .isInstanceOf(ValidationException.class) |
| 223 | + .extracting(t -> ((ValidationException) t).error().keyword()) |
| 224 | + .isEqualTo("false"); |
| 225 | + } |
175 | 226 | } |
0 commit comments