-
Notifications
You must be signed in to change notification settings - Fork 6
/
conform.in
71 lines (58 loc) · 2.23 KB
/
conform.in
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# this file's format:
# pipe delimited
# columns:
# interface
# function
# params (as json array)
# status: ok or err
# expected response body (as json, only checked if status==ok)
# clients should skip blank lines, or lines that start with #
# clients should assume endpoints of localhost:9233
# clients should not validate requests (we intentionally include some invalid ones)
# clients should validate responses
#
# servers should validate requests and responses
# servers should bind to localhost:9233
### valid invocations. make sure output is valid
B|echo|["hello"]|ok|"hello"
# special case. server should retrurn JSON null object
# verifies that optional return types work
B|echo|["return-null"]|ok|null
# note: we require non-ascii characters to be unicode encoded
# this ensures common behavior across all json parsers and minimizes
# character encoding issues on the wire
B|echo|["hello w\u00f6rld"]|ok|"hello w\u00f6rld"
A|add|[3,5]|ok|8
A|sqrt|[9]|ok|3.0
A|sqrt|[25.0]|ok|5.0
A|calc|[[2,3.0,6], "add"]|ok|11.0
A|calc|[[4,4,7], "multiply"]|ok|112.0
A|say_hi|[]|ok|{"hi":"hi"}
A|repeat|[{"to_repeat":"yo", "count": 2, "force_uppercase": false}]|ok|{"status":"ok","count":2,"items":["yo","yo"]}
A|repeat|[{"to_repeat":"hi", "count": 1, "force_uppercase": true}]|ok|{"status":"ok","count":1,"items":["HI"]}
A|repeat_num|[2, 3]|ok|[2,2,2]
# null email is allowed
A|putPerson|[{"personId":"1","firstName":"bob","lastName":"doe"}]|ok|"1"
# string email is ok
A|putPerson|[{"personId":"2","firstName":"bob","lastName":"doe","email":"foo@bar.com"}]|ok|"2"
# wrong email type is not
A|putPerson|[{"personId":"1","firstName":"bob","lastName":"doe","email":1}]|rpcerr|-32602
# batch test - clients should send batch and output the results
start_batch
A|sqrt|[36.0]|ok|6.0
A|say_hi|[]|ok|{"hi":"hi"}
end_batch
### invalid invocations. make sure we get the right error codes
# invalid types
B|echo|[2]|rpcerr|-32602
B|echo|[{"hello":"1"}]|rpcerr|-32602
A|say_hi|["blah"]|rpcerr|-32602
A|add|[3.3,5]|rpcerr|-32602
A|calc|[[2,3,"6"], "add"]|rpcerr|-32602
# invalid enum
A|calc|[[2,3,3], "subtract"]|rpcerr|-32602
# wrong param count
B|echo|null|rpcerr|-32602
# invalid - null parameters
B|echo|[null]|rpcerr|-32602
A|repeat_num|[2, null]|rpcerr|-32602