forked from joshcarp/sysl-proxy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathretriever_test.go
59 lines (51 loc) · 38.4 KB
/
retriever_test.go
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
package sysl_proxy
import (
"github.com/anz-bank/gop/pkg/retrievers/github"
"github.com/stretchr/testify/require"
"net/http/httptest"
"strings"
"testing"
)
func TestGithubMock(t *testing.T) {
mock := github.NewMockFromMap(GithubRequestPaths)
h := httptest.NewServer(&mock)
retriever := github.New(nil)
retriever.Client = h.Client()
retriever.ApiBase = h.URL
syslproxy := NewProcessor(retriever)
defer h.Close()
for resource, contents := range Tests {
t.Run(resource, func(t *testing.T) {
res, cached, err := syslproxy.Retrieve(resource)
require.NoError(t, err)
require.False(t, cached)
require.Equal(t, strings.ReplaceAll(contents, " ", ""), strings.ReplaceAll(string(res), " ", ""))
})
}
}
var Tests = map[string]string{
"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac": `{"apps":{"App":{"name":{"part":["App"]},"attrs":{"package":{"s":"App"}},"endpoints":{"GET /address":{"name":"GET /address","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"param":[{"name":"ok","type":{"typeRef":{"ref":{"path":["foo"]}}}}],"stmt":[{"ret":{"payload":"ok <: sequence of App.foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":7,"col":12},"end":{"line":7,"col":18},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}}],"restParams":{"method":"GET","path":"/address"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":6,"col":8},"end":{"line":8,"col":4},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}}},"types":{"foo":{"tuple":{"attrDefs":{"that":{"primitive":"INT","sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":10,"col":16},"end":{"line":10,"col":16},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}},"this":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":9,"col":16},"end":{"line":9,"col":16},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}}}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":8,"col":4},"end":{"line":11,"col":3},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":3,"col":1},"end":{"line":3},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}},"Bar":{"name":{"part":["Bar"]},"endpoints":{"GET /address":{"name":"GET /address","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"stmt":[{"ret":{"payload":"ok <: sequence of foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":26,"col":12},"end":{"line":26,"col":18},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}}],"restParams":{"method":"GET","path":"/address","queryParam":[{"name":"street","type":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":25,"col":12},"end":{"line":25,"col":19},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}}}]},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":25,"col":8},"end":{"line":27,"col":4},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}},"GET /bar/{id}":{"name":"GET /bar/{id}","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"stmt":[{"call":{"target":{"part":["App"]},"endpoint":"GET /address"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":14,"col":12},"end":{"line":14,"col":19},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}},{"ret":{"payload":"ok <: foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":15,"col":12},"end":{"line":15,"col":18},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}}],"restParams":{"method":"GET","path":"/bar/{id}","urlParam":[{"name":"id","type":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":12,"col":9},"end":{"line":12,"col":22},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}}}]},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":13,"col":8},"end":{"line":16,"col":4},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}},"GET /ref/{id}":{"name":"GET /ref/{id}","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"stmt":[{"call":{"target":{"part":["App"]},"endpoint":"GET /address"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":22,"col":12},"end":{"line":22,"col":19},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}},{"ret":{"payload":"ok <: foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":23,"col":12},"end":{"line":23,"col":18},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}}],"restParams":{"method":"GET","path":"/ref/{id}","urlParam":[{"name":"id","type":{"typeRef":{"context":{"appname":{"part":["Bar"]}},"ref":{"path":["App","foo"]}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":20,"col":9},"end":{"line":20,"col":23},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}}}]},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":21,"col":8},"end":{"line":24,"col":4},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}},"GET /sameappref/{id}":{"name":"GET /sameappref/{id}","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"stmt":[{"call":{"target":{"part":["App"]},"endpoint":"GET /address"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":18,"col":12},"end":{"line":18,"col":19},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}},{"ret":{"payload":"ok <: foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":19,"col":12},"end":{"line":19,"col":18},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}}],"restParams":{"method":"GET","path":"/sameappref/{id}","urlParam":[{"name":"id","type":{"typeRef":{"context":{"appname":{"part":["Bar"]}},"ref":{"path":["tar"]}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":16,"col":16},"end":{"line":16,"col":26},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}}}]},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":17,"col":8},"end":{"line":20,"col":4},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}}},"types":{"foo":{"tuple":{"attrDefs":{"that":{"typeRef":{"context":{"appname":{"part":["Bar"]},"path":["foo"]},"ref":{"path":["Bar","tar"]}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":29,"col":16},"end":{"line":29,"col":20},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}},"this":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":28,"col":16},"end":{"line":28,"col":16},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}}}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":27,"col":4},"end":{"line":30,"col":4},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}},"tar":{"tuple":{"attrDefs":{"that":{"primitive":"INT","sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":32,"col":16},"end":{"line":32,"col":16},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}},"this":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":31,"col":16},"end":{"line":31,"col":16},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}}}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":30,"col":4},"end":{"line":33},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@911c664b22f5b8dedb7f1f0554ae3ea77085eaac","start":{"line":11,"col":1},"end":{"line":11},"version":"911c664b22f5b8dedb7f1f0554ae3ea77085eaac"}},"sdifnscfsdhifs":{"name":{"part":["sdifnscfsdhifs"]},"endpoints":{"GET /address":{"name":"GET /address","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"param":[{"name":"ok","type":{"typeRef":{"ref":{"path":["foo"]}}}}],"stmt":[{"ret":{"payload":"ok <: sequence of App.foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":5,"col":12},"end":{"line":5,"col":18},"version":"main"}}],"restParams":{"method":"GET","path":"/address"},"sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":4,"col":8},"end":{"line":6,"col":4},"version":"main"}}},"types":{"foo":{"tuple":{"attrDefs":{"that":{"primitive":"INT","sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":8,"col":16},"end":{"line":8,"col":16},"version":"main"}},"this":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":7,"col":16},"end":{"line":7,"col":16},"version":"main"}}}},"sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":6,"col":4},"end":{"line":8,"col":19},"version":"main"}}},"sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":2,"col":1},"end":{"line":2},"version":"main"}}}}`,
"github.com/joshcarp/sysl-1/[email protected]": `{"apps":{"App":{"name":{"part":["App"]},"attrs":{"package":{"s":"App"}},"endpoints":{"GET /address":{"name":"GET /address","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"param":[{"name":"ok","type":{"typeRef":{"ref":{"path":["foo"]}}}}],"stmt":[{"ret":{"payload":"ok <: sequence of App.foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":7,"col":12},"end":{"line":7,"col":18},"version":"v1.0.0"}}],"restParams":{"method":"GET","path":"/address"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":6,"col":8},"end":{"line":8,"col":4},"version":"v1.0.0"}}},"types":{"foo":{"tuple":{"attrDefs":{"that":{"primitive":"INT","sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":10,"col":16},"end":{"line":10,"col":16},"version":"v1.0.0"}},"this":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":9,"col":16},"end":{"line":9,"col":16},"version":"v1.0.0"}}}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":8,"col":4},"end":{"line":11,"col":3},"version":"v1.0.0"}}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":3,"col":1},"end":{"line":3},"version":"v1.0.0"}},"Bar":{"name":{"part":["Bar"]},"endpoints":{"GET /address":{"name":"GET /address","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"stmt":[{"ret":{"payload":"ok <: sequence of foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":26,"col":12},"end":{"line":26,"col":18},"version":"v1.0.0"}}],"restParams":{"method":"GET","path":"/address","queryParam":[{"name":"street","type":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":25,"col":12},"end":{"line":25,"col":19},"version":"v1.0.0"}}}]},"sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":25,"col":8},"end":{"line":27,"col":4},"version":"v1.0.0"}},"GET /bar/{id}":{"name":"GET /bar/{id}","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"stmt":[{"call":{"target":{"part":["App"]},"endpoint":"GET /address"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":14,"col":12},"end":{"line":14,"col":19},"version":"v1.0.0"}},{"ret":{"payload":"ok <: foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":15,"col":12},"end":{"line":15,"col":18},"version":"v1.0.0"}}],"restParams":{"method":"GET","path":"/bar/{id}","urlParam":[{"name":"id","type":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":12,"col":9},"end":{"line":12,"col":22},"version":"v1.0.0"}}}]},"sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":13,"col":8},"end":{"line":16,"col":4},"version":"v1.0.0"}},"GET /ref/{id}":{"name":"GET /ref/{id}","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"stmt":[{"call":{"target":{"part":["App"]},"endpoint":"GET /address"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":22,"col":12},"end":{"line":22,"col":19},"version":"v1.0.0"}},{"ret":{"payload":"ok <: foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":23,"col":12},"end":{"line":23,"col":18},"version":"v1.0.0"}}],"restParams":{"method":"GET","path":"/ref/{id}","urlParam":[{"name":"id","type":{"typeRef":{"context":{"appname":{"part":["Bar"]}},"ref":{"path":["App","foo"]}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":20,"col":9},"end":{"line":20,"col":23},"version":"v1.0.0"}}}]},"sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":21,"col":8},"end":{"line":24,"col":4},"version":"v1.0.0"}},"GET /sameappref/{id}":{"name":"GET /sameappref/{id}","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"stmt":[{"call":{"target":{"part":["App"]},"endpoint":"GET /address"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":18,"col":12},"end":{"line":18,"col":19},"version":"v1.0.0"}},{"ret":{"payload":"ok <: foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":19,"col":12},"end":{"line":19,"col":18},"version":"v1.0.0"}}],"restParams":{"method":"GET","path":"/sameappref/{id}","urlParam":[{"name":"id","type":{"typeRef":{"context":{"appname":{"part":["Bar"]}},"ref":{"path":["tar"]}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":16,"col":16},"end":{"line":16,"col":26},"version":"v1.0.0"}}}]},"sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":17,"col":8},"end":{"line":20,"col":4},"version":"v1.0.0"}}},"types":{"foo":{"tuple":{"attrDefs":{"that":{"typeRef":{"context":{"appname":{"part":["Bar"]},"path":["foo"]},"ref":{"path":["Bar","tar"]}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":29,"col":16},"end":{"line":29,"col":20},"version":"v1.0.0"}},"this":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":28,"col":16},"end":{"line":28,"col":16},"version":"v1.0.0"}}}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":27,"col":4},"end":{"line":30,"col":4},"version":"v1.0.0"}},"tar":{"tuple":{"attrDefs":{"that":{"primitive":"INT","sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":32,"col":16},"end":{"line":32,"col":16},"version":"v1.0.0"}},"this":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":31,"col":16},"end":{"line":31,"col":16},"version":"v1.0.0"}}}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":30,"col":4},"end":{"line":33},"version":"v1.0.0"}}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/[email protected]","start":{"line":11,"col":1},"end":{"line":11},"version":"v1.0.0"}},"sdifnscfsdhifs":{"name":{"part":["sdifnscfsdhifs"]},"endpoints":{"GET /address":{"name":"GET /address","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"param":[{"name":"ok","type":{"typeRef":{"ref":{"path":["foo"]}}}}],"stmt":[{"ret":{"payload":"ok <: sequence of App.foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":5,"col":12},"end":{"line":5,"col":18},"version":"main"}}],"restParams":{"method":"GET","path":"/address"},"sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":4,"col":8},"end":{"line":6,"col":4},"version":"main"}}},"types":{"foo":{"tuple":{"attrDefs":{"that":{"primitive":"INT","sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":8,"col":16},"end":{"line":8,"col":16},"version":"main"}},"this":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":7,"col":16},"end":{"line":7,"col":16},"version":"main"}}}},"sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":6,"col":4},"end":{"line":8,"col":19},"version":"main"}}},"sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":2,"col":1},"end":{"line":2},"version":"main"}}}}`,
"github.com/joshcarp/sysl-1/sysl.sysl@main": `{"apps":{"App":{"name":{"part":["App"]},"attrs":{"package":{"s":"App"}},"endpoints":{"GET /address":{"name":"GET /address","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"param":[{"name":"ok","type":{"typeRef":{"ref":{"path":["foo"]}}}}],"stmt":[{"ret":{"payload":"ok <: sequence of App.foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":7,"col":12},"end":{"line":7,"col":18},"version":"main"}}],"restParams":{"method":"GET","path":"/address"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":6,"col":8},"end":{"line":8,"col":4},"version":"main"}}},"types":{"foo":{"tuple":{"attrDefs":{"that":{"primitive":"INT","sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":10,"col":16},"end":{"line":10,"col":16},"version":"main"}},"this":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":9,"col":16},"end":{"line":9,"col":16},"version":"main"}}}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":8,"col":4},"end":{"line":11,"col":3},"version":"main"}}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":3,"col":1},"end":{"line":3},"version":"main"}},"Bar":{"name":{"part":["Bar"]},"endpoints":{"GET /address":{"name":"GET /address","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"stmt":[{"ret":{"payload":"ok <: sequence of foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":26,"col":12},"end":{"line":26,"col":18},"version":"main"}}],"restParams":{"method":"GET","path":"/address","queryParam":[{"name":"street","type":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":25,"col":12},"end":{"line":25,"col":19},"version":"main"}}}]},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":25,"col":8},"end":{"line":27,"col":4},"version":"main"}},"GET /bar/{id}":{"name":"GET /bar/{id}","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"stmt":[{"call":{"target":{"part":["App"]},"endpoint":"GET /address"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":14,"col":12},"end":{"line":14,"col":19},"version":"main"}},{"ret":{"payload":"ok <: foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":15,"col":12},"end":{"line":15,"col":18},"version":"main"}}],"restParams":{"method":"GET","path":"/bar/{id}","urlParam":[{"name":"id","type":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":12,"col":9},"end":{"line":12,"col":22},"version":"main"}}}]},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":13,"col":8},"end":{"line":16,"col":4},"version":"main"}},"GET /ref/{id}":{"name":"GET /ref/{id}","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"stmt":[{"call":{"target":{"part":["App"]},"endpoint":"GET /address"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":22,"col":12},"end":{"line":22,"col":19},"version":"main"}},{"ret":{"payload":"ok <: foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":23,"col":12},"end":{"line":23,"col":18},"version":"main"}}],"restParams":{"method":"GET","path":"/ref/{id}","urlParam":[{"name":"id","type":{"typeRef":{"context":{"appname":{"part":["Bar"]}},"ref":{"path":["App","foo"]}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":20,"col":9},"end":{"line":20,"col":23},"version":"main"}}}]},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":21,"col":8},"end":{"line":24,"col":4},"version":"main"}},"GET /sameappref/{id}":{"name":"GET /sameappref/{id}","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"stmt":[{"call":{"target":{"part":["App"]},"endpoint":"GET /address"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":18,"col":12},"end":{"line":18,"col":19},"version":"main"}},{"ret":{"payload":"ok <: foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":19,"col":12},"end":{"line":19,"col":18},"version":"main"}}],"restParams":{"method":"GET","path":"/sameappref/{id}","urlParam":[{"name":"id","type":{"typeRef":{"context":{"appname":{"part":["Bar"]}},"ref":{"path":["tar"]}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":16,"col":16},"end":{"line":16,"col":26},"version":"main"}}}]},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":17,"col":8},"end":{"line":20,"col":4},"version":"main"}}},"types":{"foo":{"tuple":{"attrDefs":{"that":{"typeRef":{"context":{"appname":{"part":["Bar"]},"path":["foo"]},"ref":{"path":["Bar","tar"]}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":29,"col":16},"end":{"line":29,"col":20},"version":"main"}},"this":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":28,"col":16},"end":{"line":28,"col":16},"version":"main"}}}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":27,"col":4},"end":{"line":30,"col":4},"version":"main"}},"tar":{"tuple":{"attrDefs":{"that":{"primitive":"INT","sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":32,"col":16},"end":{"line":32,"col":16},"version":"main"}},"this":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":31,"col":16},"end":{"line":31,"col":16},"version":"main"}}}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":30,"col":4},"end":{"line":33},"version":"main"}}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":11,"col":1},"end":{"line":11},"version":"main"}},"_":{"name":{"part":["_"]},"endpoints":{"...":{"name":"..."}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl.sysl@main","start":{"line":3,"col":1},"end":{"line":3},"version":"main"}},"sdifnscfsdhifs":{"name":{"part":["sdifnscfsdhifs"]},"endpoints":{"GET /address":{"name":"GET /address","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"param":[{"name":"ok","type":{"typeRef":{"ref":{"path":["foo"]}}}}],"stmt":[{"ret":{"payload":"ok <: sequence of App.foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":5,"col":12},"end":{"line":5,"col":18},"version":"main"}}],"restParams":{"method":"GET","path":"/address"},"sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":4,"col":8},"end":{"line":6,"col":4},"version":"main"}}},"types":{"foo":{"tuple":{"attrDefs":{"that":{"primitive":"INT","sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":8,"col":16},"end":{"line":8,"col":16},"version":"main"}},"this":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":7,"col":16},"end":{"line":7,"col":16},"version":"main"}}}},"sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":6,"col":4},"end":{"line":8,"col":19},"version":"main"}}},"sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":2,"col":1},"end":{"line":2},"version":"main"}}}}`,
"github.com/joshcarp/sysl-1/sysl-1.sysl@main": `{"apps":{"App":{"name":{"part":["App"]},"attrs":{"package":{"s":"App"}},"endpoints":{"GET /address":{"name":"GET /address","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"param":[{"name":"ok","type":{"typeRef":{"ref":{"path":["foo"]}}}}],"stmt":[{"ret":{"payload":"ok <: sequence of App.foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":7,"col":12},"end":{"line":7,"col":18},"version":"main"}}],"restParams":{"method":"GET","path":"/address"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":6,"col":8},"end":{"line":8,"col":4},"version":"main"}}},"types":{"foo":{"tuple":{"attrDefs":{"that":{"primitive":"INT","sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":10,"col":16},"end":{"line":10,"col":16},"version":"main"}},"this":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":9,"col":16},"end":{"line":9,"col":16},"version":"main"}}}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":8,"col":4},"end":{"line":11,"col":3},"version":"main"}}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":3,"col":1},"end":{"line":3},"version":"main"}},"Bar":{"name":{"part":["Bar"]},"endpoints":{"GET /address":{"name":"GET /address","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"stmt":[{"ret":{"payload":"ok <: sequence of foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":26,"col":12},"end":{"line":26,"col":18},"version":"main"}}],"restParams":{"method":"GET","path":"/address","queryParam":[{"name":"street","type":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":25,"col":12},"end":{"line":25,"col":19},"version":"main"}}}]},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":25,"col":8},"end":{"line":27,"col":4},"version":"main"}},"GET /bar/{id}":{"name":"GET /bar/{id}","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"stmt":[{"call":{"target":{"part":["App"]},"endpoint":"GET /address"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":14,"col":12},"end":{"line":14,"col":19},"version":"main"}},{"ret":{"payload":"ok <: foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":15,"col":12},"end":{"line":15,"col":18},"version":"main"}}],"restParams":{"method":"GET","path":"/bar/{id}","urlParam":[{"name":"id","type":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":12,"col":9},"end":{"line":12,"col":22},"version":"main"}}}]},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":13,"col":8},"end":{"line":16,"col":4},"version":"main"}},"GET /ref/{id}":{"name":"GET /ref/{id}","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"stmt":[{"call":{"target":{"part":["App"]},"endpoint":"GET /address"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":22,"col":12},"end":{"line":22,"col":19},"version":"main"}},{"ret":{"payload":"ok <: foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":23,"col":12},"end":{"line":23,"col":18},"version":"main"}}],"restParams":{"method":"GET","path":"/ref/{id}","urlParam":[{"name":"id","type":{"typeRef":{"context":{"appname":{"part":["Bar"]}},"ref":{"path":["App","foo"]}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":20,"col":9},"end":{"line":20,"col":23},"version":"main"}}}]},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":21,"col":8},"end":{"line":24,"col":4},"version":"main"}},"GET /sameappref/{id}":{"name":"GET /sameappref/{id}","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"stmt":[{"call":{"target":{"part":["App"]},"endpoint":"GET /address"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":18,"col":12},"end":{"line":18,"col":19},"version":"main"}},{"ret":{"payload":"ok <: foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":19,"col":12},"end":{"line":19,"col":18},"version":"main"}}],"restParams":{"method":"GET","path":"/sameappref/{id}","urlParam":[{"name":"id","type":{"typeRef":{"context":{"appname":{"part":["Bar"]}},"ref":{"path":["tar"]}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":16,"col":16},"end":{"line":16,"col":26},"version":"main"}}}]},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":17,"col":8},"end":{"line":20,"col":4},"version":"main"}}},"types":{"foo":{"tuple":{"attrDefs":{"that":{"typeRef":{"context":{"appname":{"part":["Bar"]},"path":["foo"]},"ref":{"path":["Bar","tar"]}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":29,"col":16},"end":{"line":29,"col":20},"version":"main"}},"this":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":28,"col":16},"end":{"line":28,"col":16},"version":"main"}}}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":27,"col":4},"end":{"line":30,"col":4},"version":"main"}},"tar":{"tuple":{"attrDefs":{"that":{"primitive":"INT","sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":32,"col":16},"end":{"line":32,"col":16},"version":"main"}},"this":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":31,"col":16},"end":{"line":31,"col":16},"version":"main"}}}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":30,"col":4},"end":{"line":33},"version":"main"}}},"sourceContext":{"file":"github.com/joshcarp/sysl-1/sysl-1.sysl@main","start":{"line":11,"col":1},"end":{"line":11},"version":"main"}},"sdifnscfsdhifs":{"name":{"part":["sdifnscfsdhifs"]},"endpoints":{"GET /address":{"name":"GET /address","attrs":{"patterns":{"a":{"elt":[{"s":"rest"}]}}},"param":[{"name":"ok","type":{"typeRef":{"ref":{"path":["foo"]}}}}],"stmt":[{"ret":{"payload":"ok <: sequence of App.foo"},"sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":5,"col":12},"end":{"line":5,"col":18},"version":"main"}}],"restParams":{"method":"GET","path":"/address"},"sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":4,"col":8},"end":{"line":6,"col":4},"version":"main"}}},"types":{"foo":{"tuple":{"attrDefs":{"that":{"primitive":"INT","sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":8,"col":16},"end":{"line":8,"col":16},"version":"main"}},"this":{"primitive":"STRING","sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":7,"col":16},"end":{"line":7,"col":16},"version":"main"}}}},"sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":6,"col":4},"end":{"line":8,"col":19},"version":"main"}}},"sourceContext":{"file":"github.com/joshcarp/sysl-2/sysl-2.sysl@main","start":{"line":2,"col":1},"end":{"line":2},"version":"main"}}}}`,
}
var GithubRequestPaths = map[string]string{
/* These mock the "repo/content" endpoint */
"/repos/joshcarp/sysl-1/contents/sysl.sysl?ref=main": "import sysl-1.sysl\n\n_:\n ...\n",
"/repos/joshcarp/sysl-1/contents/sysl-1.sysl?ref=main": "import //github.com/joshcarp/sysl-2/sysl-2.sysl\n\nApp:\n @package = \"App\"\n /address:\n GET(ok <: foo):\n return ok <: sequence of App.foo\n !type foo:\n this <: string\n that <: int\nBar:\n /bar/{id <: string}:\n GET:\n App <- GET /address\n return ok <: foo\n /sameappref/{id <: tar}:\n GET:\n App <- GET /address\n return ok <: foo\n /ref/{id <: App.foo}:\n GET:\n App <- GET /address\n return ok <: foo\n /address:\n GET?street=string:\n return ok <: sequence of foo\n !type foo:\n this <: string\n that <: Bar.tar\n !type tar:\n this <: string\n that <: int\n",
"/repos/joshcarp/sysl-1/contents/sysl.sysl?ref=ee5c8cd2b97ba24226cb86556c17ad4f852915f2": "import sysl-1.sysl\n\n_:\n ...\n",
"/repos/joshcarp/sysl-1/contents/sysl-1.sysl?ref=911c664b22f5b8dedb7f1f0554ae3ea77085eaac": "import //github.com/joshcarp/sysl-2/sysl-2.sysl@main\n\nApp:\n @package = \"App\"\n /address:\n GET(ok <: foo):\n return ok <: sequence of App.foo\n !type foo:\n this <: string\n that <: int\nBar:\n /bar/{id <: string}:\n GET:\n App <- GET /address\n return ok <: foo\n /sameappref/{id <: tar}:\n GET:\n App <- GET /address\n return ok <: foo\n /ref/{id <: App.foo}:\n GET:\n App <- GET /address\n return ok <: foo\n /address:\n GET?street=string:\n return ok <: sequence of foo\n !type foo:\n this <: string\n that <: Bar.tar\n !type tar:\n this <: string\n that <: int\n",
"/repos/joshcarp/sysl-1/contents/sysl.sysl?ref=v1.0.0": "import sysl-1.sysl\n\n_:\n ...\n",
"/repos/joshcarp/sysl-1/contents/sysl-1.sysl?ref=v1.0.0": "import //github.com/joshcarp/sysl-2/sysl-2.sysl@main\n\nApp:\n @package = \"App\"\n /address:\n GET(ok <: foo):\n return ok <: sequence of App.foo\n !type foo:\n this <: string\n that <: int\nBar:\n /bar/{id <: string}:\n GET:\n App <- GET /address\n return ok <: foo\n /sameappref/{id <: tar}:\n GET:\n App <- GET /address\n return ok <: foo\n /ref/{id <: App.foo}:\n GET:\n App <- GET /address\n return ok <: foo\n /address:\n GET?street=string:\n return ok <: sequence of foo\n !type foo:\n this <: string\n that <: Bar.tar\n !type tar:\n this <: string\n that <: int\n",
/* These mock the "commits" endpoint */
"/repos/anz-bank/gop/commits/test": "dad0c54cae43ea40f3f1b5063af680ed4521eab2",
"/repos/anz-bank/gop/commits/test2": "dad0c54cae43ea40f3f1b5063af680ed4521eab2",
"/repos/joshcarp/sysl-1/contents/sysl-1.sysl?ref=e52c640e41ba2cc918e4f2dda3a2cfeb4768b075": "import //github.com/joshcarp/sysl-2/sysl-2.sysl\n\nApp:\n @package = \"App\"\n /address:\n GET(ok <: foo):\n return ok <: sequence of App.foo\n !type foo:\n this <: string\n that <: int\nBar:\n /bar/{id <: string}:\n GET:\n App <- GET /address\n return ok <: foo\n /sameappref/{id <: tar}:\n GET:\n App <- GET /address\n return ok <: foo\n /ref/{id <: App.foo}:\n GET:\n App <- GET /address\n return ok <: foo\n /address:\n GET?street=string:\n return ok <: sequence of foo\n !type foo:\n this <: string\n that <: Bar.tar\n !type tar:\n this <: string\n that <: int\n",
"/repos/joshcarp/sysl-1/contents/sysl_modules/sysl.mod?ref=e52c640e41ba2cc918e4f2dda3a2cfeb4768b075": "\ndirect:\n- pattern: github.com/joshcarp/sysl-2\n resolve: github.com/joshcarp/sysl-2@0e19b891da4ea38e82910a5ef3dc24692ab711ce",
"/repos/joshcarp/sysl-1/commits/main": "e52c640e41ba2cc918e4f2dda3a2cfeb4768b075",
"/repos/joshcarp/sysl-2/commits/0e19b891da4ea38e82910a5ef3dc24692ab711ce": "0e19b891da4ea38e82910a5ef3dc24692ab711ce",
"/repos/joshcarp/sysl-2/contents/sysl-2.sysl?ref=0e19b891da4ea38e82910a5ef3dc24692ab711ce": "\nsdifnscfsdhifs:\n /address:\n GET(ok <: foo):\n return ok <: sequence of App.foo\n !type foo:\n this <: string\n that <: int",
"/repos/joshcarp/sysl-2/contents/sysl-2.sysl?ref=main": "\nsdifnscfsdhifs:\n /address:\n GET(ok <: foo):\n return ok <: sequence of App.foo\n !type foo:\n this <: string\n that <: int",
"/repos/joshcarp/sysl-1/contents/sysl-1.sysl?ref=ee5c8cd2b97ba24226cb86556c17ad4f852915f2": "import //github.com/joshcarp/sysl-2/sysl-2.sysl\n\nApp:\n @package = \"App\"\n /address:\n GET(ok <: foo):\n return ok <: sequence of App.foo\n !type foo:\n this <: string\n that <: int\nBar:\n /bar/{id <: string}:\n GET:\n App <- GET /address\n return ok <: foo\n /sameappref/{id <: tar}:\n GET:\n App <- GET /address\n return ok <: foo\n /ref/{id <: App.foo}:\n GET:\n App <- GET /address\n return ok <: foo\n /address:\n GET?street=string:\n return ok <: sequence of foo\n !type foo:\n this <: string\n that <: Bar.tar\n !type tar:\n this <: string\n that <: int\n",
"/repos/joshcarp/sysl-2/contents/sysl-1.sysl?ref=ee5c8cd2b97ba24226cb86556c17ad4f852915f2": "import //github.com/joshcarp/sysl-2/sysl-2.sysl\n\nApp:\n @package = \"App\"\n /address:\n GET(ok <: foo):\n return ok <: sequence of App.foo\n !type foo:\n this <: string\n that <: int\nBar:\n /bar/{id <: string}:\n GET:\n App <- GET /address\n return ok <: foo\n /sameappref/{id <: tar}:\n GET:\n App <- GET /address\n return ok <: foo\n /ref/{id <: App.foo}:\n GET:\n App <- GET /address\n return ok <: foo\n /address:\n GET?street=string:\n return ok <: sequence of foo\n !type foo:\n this <: string\n that <: Bar.tar\n !type tar:\n this <: string\n that <: int\n",
}