-
Notifications
You must be signed in to change notification settings - Fork 2
Examples
Roberto Hermoso edited this page Feb 25, 2020
·
2 revisions
All tests will be done with the OAS_test_suite.yaml specification
IF p1 THEN NOT p2;
IF p2 THEN p3==5;
IF NOT p1 THEN p4;
IF p4 THEN p5==p7; // Complex with 2 types
IF NOT (p4 OR p6) THEN p5 AND p7;
OnlyOne(Or(p7, p8), Or(p9, p10)); // Complex with 2 types
IF p7 OR p8 THEN p9 OR p10;
IF p1==true THEN NOT (p2==3 OR p4==4) AND p7;
IF p3 THEN AllOrNone(p1, p2); // Complex with 2 types
IF p8 THEN p9;
Operation path: /combiantorial2
/combinatorial2:
get:
parameters:
- name: "p1"
in: "query"
required: false
type: "boolean"
- name: "p2"
in: "query"
required: false
type: "integer"
- name: "p3"
in: "query"
required: false
type: "integer"
enum:
- 1
- 2
- 3
- 4
- 5
- name: "p4"
in: "query"
required: false
type: "integer"
- name: "p5"
in: "query"
required: false
type: "integer"
enum:
- 1
- 2
- 3
- 4
- 5
- name: "p6"
in: "query"
required: false
type: "boolean"
- name: "p7"
in: "query"
required: false
type: "integer"
- name: "p8"
in: "query"
required: false
type: "integer"
enum:
- 1
- 2
- 3
- 4
- 5
- name: "p9"
in: "query"
required: false
type: "integer"
- name: "p10"
in: "query"
required: false
type: "integer"
enum:
- 1
- 2
- 3
- 4
- 5
responses:
default:
description: "Default"
Analyzer analyzer = new Analyzer("oas","combinatorial2.idl", "./src/test/resources/OAS_test_suite.yaml", "/combinatorial2", "get");
analyzer.isDeadParameter("p1") //The parameter p1 should NOT be dead
analyzer.isDeadParameter("p2") //The parameter p2 SHOULD be dead
IF p1 THEN NOT p2;
IF p2 THEN p3==5;
IF NOT p1 THEN p4;
IF p4 THEN p5==p7; // Complex with 2 types
IF NOT (p4 OR p6) THEN p5 AND p7;
OnlyOne(Or(p7, p8), Or(p9, p10)); // Complex with 2 types
IF p7 OR p8 THEN p9 OR p10;
IF p1==true THEN NOT (p2==3 OR p4==4) AND p7;
IF p3 THEN AllOrNone(p1, p2); // Complex with 2 types
IF p8 THEN p9;
Operation path: /combiantorial2
/combinatorial2:
get:
parameters:
- name: "p1"
in: "query"
required: false
type: "boolean"
- name: "p2"
in: "query"
required: false
type: "integer"
- name: "p3"
in: "query"
required: false
type: "integer"
enum:
- 1
- 2
- 3
- 4
- 5
- name: "p4"
in: "query"
required: false
type: "integer"
- name: "p5"
in: "query"
required: false
type: "integer"
enum:
- 1
- 2
- 3
- 4
- 5
- name: "p6"
in: "query"
required: false
type: "boolean"
- name: "p7"
in: "query"
required: false
type: "integer"
- name: "p8"
in: "query"
required: false
type: "integer"
enum:
- 1
- 2
- 3
- 4
- 5
- name: "p9"
in: "query"
required: false
type: "integer"
- name: "p10"
in: "query"
required: false
type: "integer"
enum:
- 1
- 2
- 3
- 4
- 5
responses:
default:
description: "Default"
Analyzer analyzer = new Analyzer("oas","combinatorial2.idl", "./src/test/resources/OAS_test_suite.yaml", "/combinatorial2", "get");
analyzer.isFalseOptional("p1") //The parameter p1 IS a dead parameter
analyzer.isFalseOptional("p2") //The parameter p2 is NOT a false optional
IF p1=='value1' THEN p2=='value2';
IF p3<1 THEN p4>5;
IF NOT (p2<=3 OR p3<=4 OR p2=='value5') AND NOT p1=='value3' THEN p3<=2;
IF p5<=4 THEN NOT p3<4;
AllOrNone(p3==3, p3==3);
AllOrNone(p3 OR p4 OR p4, p1, p2);
AllOrNone(p1=='invalid value', p2=='another invalid value', p5==10);
OnlyOne(p5==1, p5==1);
OnlyOne(p1, p2, p3, p4, p5);
OnlyOne(p1=='value2' AND p5>-1, p3>3);
Operation path: /combiantorial6
/combinatorial6:
get:
parameters:
- name: "p1"
in: "query"
required: true
type: "string"
enum:
- "value1"
- "value2"
- "value3"
- "value4"
- "value5"
- name: "p2"
in: "query"
required: true
type: "string"
enum:
- "value1"
- "value2"
- "value3"
- "value4"
- "value5"
- name: "p3"
in: "query"
required: true
type: "integer"
enum:
- 1
- 2
- 3
- 4
- 5
- name: "p4"
in: "query"
required: true
type: "integer"
enum:
- 1
- 2
- 3
- 4
- 5
- name: "p5"
in: "query"
required: true
type: "integer"
enum:
- 1
- 2
- 3
- 4
- 5
responses:
default:
description: "Default"
Analyzer analyzer = new Analyzer("oas","combinatorial6.idl", "./src/test/resources/OAS_test_suite.yaml", "/combinatorial6", "get");
analyzer.isValidIDL(); //The IDL is NOT valid
IF NOT p1==false THEN p2=='something' AND p3==5;
Or(p4=='string 1'|'string 2', p5<-200, p6==true);
ZeroOrOne(p7=='another example', p8>=10);
p3*p5*p8<5;
Or(p1==p6, p4==p7);
Operation path: /combiantorial5
/combinatorial5:
get:
parameters:
- name: "p1"
in: "query"
required: true
type: "boolean"
- name: "p2"
in: "query"
required: true
type: "string"
- name: "p3"
in: "query"
required: true
type: "integer"
- name: "p4"
in: "query"
required: true
type: "string"
enum:
- "value1"
- "value2"
- "value3"
- "value4"
- "value5"
- name: "p5"
in: "query"
required: true
type: "integer"
- name: "p6"
in: "query"
required: true
type: "boolean"
- name: "p7"
in: "query"
required: true
type: "string"
- name: "p8"
in: "query"
required: true
type: "integer"
- name: "p9"
in: "query"
required: true
type: "string"
enum:
- "value1"
- "value2"
- "value3"
- "value4"
- "value5"
- name: "p10"
in: "query"
required: true
type: "string"
enum:
- "value1"
- "value2"
- "value3"
- "value4"
- "value5"
responses:
default:
description: "Default"
Analyzer analyzer = new Analyzer("oas","combinatorial5.idl", "./src/test/resources/OAS_test_suite.yaml", "/combinatorial5", "get")
analyzer.isValidIDL(); //The IDL is VALID
Or(p1=='value1', p2=='value1');
OnlyOne(p2=='value2', p3=='value2');
AllOrNone(p2=='value3', p3=='value4');
ZeroOrOne(p4=='value5', p5=='value6');
p1==p5;
Operation path: /combiantorial1
/combinatorial1:
get:
parameters:
- name: "p1"
in: "query"
required: true
type: "string"
- name: "p2"
in: "query"
required: true
type: "string"
- name: "p3"
in: "query"
required: true
type: "string"
- name: "p4"
in: "query"
required: true
type: "string"
- name: "p5"
in: "query"
required: true
type: "string"
responses:
default:
description: "Default"
Analyzer analyzer = new Analyzer("oas","combinatorial1.idl", "./src/test/resources/OAS_test_suite.yaml", "/combinatorial1", "get");
Map<String, String> request = new HashMap<>();
request.put("p1", "value1");
request.put("p2", "value2");
request.put("p3", "value3");
request.put("p4", "value4");
request.put("p5", "value1");
analyzer.validRequest(request) //The request is VALID
Or(p1=='value1', p2=='value1');
OnlyOne(p2=='value2', p3=='value2');
AllOrNone(p2=='value3', p3=='value4');
ZeroOrOne(p4=='value5', p5=='value6');
p1==p5;
Operation path: /combiantorial1
/combinatorial1:
get:
parameters:
- name: "p1"
in: "query"
required: true
type: "string"
- name: "p2"
in: "query"
required: true
type: "string"
- name: "p3"
in: "query"
required: true
type: "string"
- name: "p4"
in: "query"
required: true
type: "string"
- name: "p5"
in: "query"
required: true
type: "string"
responses:
default:
description: "Default"
Analyzer analyzer = new Analyzer("oas","combinatorial1.idl", "./src/test/resources/OAS_test_suite.yaml", "/combinatorial1", "get");
Map<String, String> request = new HashMap<>();
request.put("p1", "value1");
request.put("p2", "value2");
request.put("p3", "value3");
request.put("p4", "value4");
request.put("p5", "value5"); // Violates this dependency: p1==p5;
analyzer.validRequest(request) //The request is NOT valid
ZeroOrOne(p7 AND p8, p7 AND p8 OR p9=='value5');
AllOrNone(p4 AND p5, p6 AND p7);
NOT ZeroOrOne(p5==1000, p4==10000 OR p3==100000, p2==1000000);
IF p1 AND Or(p2, p3) THEN p1+p2+p4<=999 AND OnlyOne(p6, AllOrNone(p7, p8));
IF NOT (p4==p5 AND ZeroOrOne(p6, p7)) THEN Or(p6=='value1', p7 AND p8=='value3') OR OnlyOne(p1, p3);
Operation path: /combiantorial4
/combinatorial4:
get:
parameters:
- name: "p1"
in: "query"
required: false
type: "integer"
- name: "p2"
in: "query"
required: false
type: "integer"
- name: "p3"
in: "query"
required: false
type: "integer"
- name: "p4"
in: "query"
required: false
type: "integer"
- name: "p5"
in: "query"
required: false
type: "integer"
- name: "p6"
in: "query"
required: false
type: "string"
enum:
- "value1"
- "value2"
- "value3"
- "value4"
- "value5"
- name: "p7"
in: "query"
required: false
type: "string"
enum:
- "value1"
- "value2"
- "value3"
- "value4"
- "value5"
- name: "p8"
in: "query"
required: false
type: "string"
enum:
- "value1"
- "value2"
- "value3"
- "value4"
- "value5"
- name: "p9"
in: "query"
required: false
type: "string"
enum:
- "value1"
- "value2"
- "value3"
- "value4"
- "value5"
- name: "p10"
in: "query"
required: false
type: "string"
enum:
- "value1"
- "value2"
- "value3"
- "value4"
- "value5"
responses:
default:
description: "Default"
Analyzer analyzer = new Analyzer("oas","combinatorial4.idl", "./src/test/resources/OAS_test_suite.yaml", "/combinatorial4", "get");
Map<String, String> partialRequest = new HashMap<>();
partialRequest.put("p2", "1000000");
partialRequest.put("p3", "100000");
partialRequest.put("p4", "10000");
partialRequest.put("p5", "1000");
analyzer.validPartialRequest(partialRequest) //The partial request is VALID
ZeroOrOne(p7 AND p8, p7 AND p8 OR p9=='value5');
AllOrNone(p4 AND p5, p6 AND p7);
NOT ZeroOrOne(p5==1000, p4==10000 OR p3==100000, p2==1000000);
IF p1 AND Or(p2, p3) THEN p1+p2+p4<=999 AND OnlyOne(p6, AllOrNone(p7, p8));
IF NOT (p4==p5 AND ZeroOrOne(p6, p7)) THEN Or(p6=='value1', p7 AND p8=='value3') OR OnlyOne(p1, p3);
Operation path: /combiantorial4
/combinatorial4:
get:
parameters:
- name: "p1"
in: "query"
required: false
type: "integer"
- name: "p2"
in: "query"
required: false
type: "integer"
- name: "p3"
in: "query"
required: false
type: "integer"
- name: "p4"
in: "query"
required: false
type: "integer"
- name: "p5"
in: "query"
required: false
type: "integer"
- name: "p6"
in: "query"
required: false
type: "string"
enum:
- "value1"
- "value2"
- "value3"
- "value4"
- "value5"
- name: "p7"
in: "query"
required: false
type: "string"
enum:
- "value1"
- "value2"
- "value3"
- "value4"
- "value5"
- name: "p8"
in: "query"
required: false
type: "string"
enum:
- "value1"
- "value2"
- "value3"
- "value4"
- "value5"
- name: "p9"
in: "query"
required: false
type: "string"
enum:
- "value1"
- "value2"
- "value3"
- "value4"
- "value5"
- name: "p10"
in: "query"
required: false
type: "string"
enum:
- "value1"
- "value2"
- "value3"
- "value4"
- "value5"
responses:
default:
description: "Default"
Analyzer analyzer = new Analyzer("oas","combinatorial4.idl", "./src/test/resources/OAS_test_suite.yaml", "/combinatorial4", "get");
Map<String, String> partialRequest = new HashMap<>();
partialRequest.put("p2", "1000000");
partialRequest.put("p3", "100000");
partialRequest.put("p4", "10000");
partialRequest.put("p5", "1000");
partialRequest.put("p8", "value5"); // If this parameter was removed, the request would be partially valid, since including p6 AND p7 would make it fully valid. As p8 is present, including p6 AND p7 would violate: ZeroOrOne(p7 AND p8, p7 AND p8 OR p9=='value5');
analyzer.validPartialRequest(partialRequest) //The partial request is NOT valid