2
2
3
3
import com .fasterxml .jackson .databind .JsonNode ;
4
4
import com .fasterxml .jackson .databind .ObjectMapper ;
5
- import org .junit .jupiter .api .Test ;
5
+ import org .junit .jupiter .params .ParameterizedTest ;
6
+ import org .junit .jupiter .params .provider .CsvSource ;
6
7
7
8
import java .io .IOException ;
8
9
import java .io .InputStream ;
9
10
10
11
import static org .junit .jupiter .api .Assertions .assertEquals ;
11
12
import static org .junit .jupiter .api .Assertions .assertThrows ;
12
13
13
- public class SpecVersionDetectorTest {
14
-
15
- private static final String SCHEMA_TAG_JSON = "schemaTag.json" ;
14
+ class SpecVersionDetectorTest {
16
15
17
16
private static final ObjectMapper mapper = new ObjectMapper ();
18
17
19
- @ Test
20
- public void detectV4 () throws IOException {
21
- InputStream in = Thread .currentThread ().getContextClassLoader ()
22
- .getResourceAsStream ("draft4/" + SCHEMA_TAG_JSON );
23
- JsonNode node = mapper .readTree (in );
24
- SpecVersion .VersionFlag flag = SpecVersionDetector .detect (node );
25
- assertEquals (SpecVersion .VersionFlag .V4 , flag );
26
- }
27
-
28
- @ Test
29
- public void detectV6 () throws IOException {
18
+ @ ParameterizedTest
19
+ @ CsvSource ({
20
+ "draft4, V4" ,
21
+ "draft6, V6" ,
22
+ "draft7, V7" ,
23
+ "draft2019-09, V201909" ,
24
+ "draft2020-12, V202012"
25
+ })
26
+ void detectVersion (String resourceDirectory , SpecVersion .VersionFlag expectedFlag ) throws IOException {
30
27
InputStream in = Thread .currentThread ().getContextClassLoader ()
31
- .getResourceAsStream ("draft6/" + SCHEMA_TAG_JSON );
28
+ .getResourceAsStream (resourceDirectory + "/schemaTag.json" );
32
29
JsonNode node = mapper .readTree (in );
33
30
SpecVersion .VersionFlag flag = SpecVersionDetector .detect (node );
34
- assertEquals (SpecVersion . VersionFlag . V6 , flag );
31
+ assertEquals (expectedFlag , flag );
35
32
}
36
33
37
- @ Test
38
- public void detectV7 () throws IOException {
39
- InputStream in = Thread .currentThread ().getContextClassLoader ()
40
- .getResourceAsStream ("draft7/" + SCHEMA_TAG_JSON );
34
+ @ ParameterizedTest
35
+ @ CsvSource ({
36
+ "data/schemaTag.json, 'http://json-schema.org/draft-03/schema#' is unrecognizable schema" ,
37
+ "data/schemaTagMissing.json, '$schema' tag is not present"
38
+ })
39
+ void detectInvalidSchemaVersion (String schemaPath , String expectedError ) throws IOException {
40
+ InputStream in = Thread .currentThread ().getContextClassLoader ().getResourceAsStream (schemaPath );
41
41
JsonNode node = mapper .readTree (in );
42
- SpecVersion . VersionFlag flag = SpecVersionDetector .detect (node );
43
- assertEquals (SpecVersion . VersionFlag . V7 , flag );
42
+ JsonSchemaException exception = assertThrows ( JsonSchemaException . class , () -> SpecVersionDetector .detect (node ) );
43
+ assertEquals (expectedError , exception . getMessage () );
44
44
}
45
-
46
- @ Test
47
- public void detectV201909 () throws IOException {
48
- InputStream in = Thread .currentThread ().getContextClassLoader ()
49
- .getResourceAsStream ("draft2019-09/" + SCHEMA_TAG_JSON );
50
- JsonNode node = mapper .readTree (in );
51
- SpecVersion .VersionFlag flag = SpecVersionDetector .detect (node );
52
- assertEquals (SpecVersion .VersionFlag .V201909 , flag );
53
- }
54
-
55
- @ Test
56
- public void detectV202012 () throws IOException {
57
- InputStream in = Thread .currentThread ().getContextClassLoader ()
58
- .getResourceAsStream ("draft2020-12/" + SCHEMA_TAG_JSON );
59
- JsonNode node = mapper .readTree (in );
60
- SpecVersion .VersionFlag flag = SpecVersionDetector .detect (node );
61
- assertEquals (SpecVersion .VersionFlag .V202012 , flag );
62
- }
63
-
64
- @ Test
65
- public void detectUnsupportedSchemaVersion () {
66
- assertThrows (JsonSchemaException .class , () -> {
67
- InputStream in = Thread .currentThread ().getContextClassLoader ()
68
- .getResourceAsStream ("data/" + SCHEMA_TAG_JSON );
69
- JsonNode node = mapper .readTree (in );
70
- SpecVersion .VersionFlag flag = SpecVersionDetector .detect (node );
71
- });
72
- }
73
-
74
- @ Test
75
- public void detectMissingSchemaVersion () {
76
- assertThrows (JsonSchemaException .class , () -> {
77
- InputStream in = Thread .currentThread ().getContextClassLoader ()
78
- .getResourceAsStream ("data/" + "schemaTagMissing.json" );
79
- JsonNode node = mapper .readTree (in );
80
- SpecVersion .VersionFlag flag = SpecVersionDetector .detect (node );
81
- });
82
- }
83
-
84
45
}
0 commit comments