4 "git.curoverse.com/arvados.git/sdk/go/arvadostest"
11 // Gocheck boilerplate
12 func Test(t *testing.T) {
16 var _ = Suite(&ServerRequiredSuite{})
17 var _ = Suite(&UnitSuite{})
19 // Tests that require the Keep server running
20 type ServerRequiredSuite struct{}
22 func (s *ServerRequiredSuite) SetUpSuite(c *C) {
23 arvadostest.StartAPI()
24 arvadostest.StartKeep()
27 func (s *ServerRequiredSuite) SetUpTest(c *C) {
28 arvadostest.ResetEnv()
31 func (s *ServerRequiredSuite) TestMakeArvadosClientSecure(c *C) {
32 os.Setenv("ARVADOS_API_HOST_INSECURE", "")
33 kc, err := MakeArvadosClient()
34 c.Assert(err, Equals, nil)
35 c.Check(kc.ApiServer, Equals, os.Getenv("ARVADOS_API_HOST"))
36 c.Check(kc.ApiToken, Equals, os.Getenv("ARVADOS_API_TOKEN"))
37 c.Check(kc.ApiInsecure, Equals, false)
40 func (s *ServerRequiredSuite) TestMakeArvadosClientInsecure(c *C) {
41 os.Setenv("ARVADOS_API_HOST_INSECURE", "true")
42 kc, err := MakeArvadosClient()
43 c.Assert(err, Equals, nil)
44 c.Check(kc.ApiInsecure, Equals, true)
45 c.Check(kc.ApiServer, Equals, os.Getenv("ARVADOS_API_HOST"))
46 c.Check(kc.ApiToken, Equals, os.Getenv("ARVADOS_API_TOKEN"))
47 c.Check(kc.Client.Transport.(*http.Transport).TLSClientConfig.InsecureSkipVerify, Equals, true)
50 func (s *ServerRequiredSuite) TestGetEmptyUUID(c *C) {
51 arv, err := MakeArvadosClient()
54 err = arv.Get("collections", "", nil, &getback)
55 c.Assert(err, Equals, ErrInvalidArgument)
56 c.Assert(len(getback), Equals, 0)
59 func (s *ServerRequiredSuite) TestInvalidResourceType(c *C) {
60 arv, err := MakeArvadosClient()
63 err = arv.Get("unicorns", "zzzzz-zebra-unicorn7unicorn", nil, &getback)
64 c.Assert(err, FitsTypeOf, APIServerError{})
65 c.Assert(err.(APIServerError).HttpStatusCode, Equals, http.StatusNotFound)
66 c.Assert(len(getback), Equals, 0)
68 err = arv.Update("unicorns", "zzzzz-zebra-unicorn7unicorn", nil, &getback)
69 c.Assert(err, FitsTypeOf, APIServerError{})
70 c.Assert(err.(APIServerError).HttpStatusCode, Equals, http.StatusNotFound)
71 c.Assert(len(getback), Equals, 0)
73 err = arv.List("unicorns", nil, &getback)
74 c.Assert(err, FitsTypeOf, APIServerError{})
75 c.Assert(err.(APIServerError).HttpStatusCode, Equals, http.StatusNotFound)
76 c.Assert(len(getback), Equals, 0)
79 func (s *ServerRequiredSuite) TestCreatePipelineTemplate(c *C) {
80 arv, err := MakeArvadosClient()
83 err = arv.Create("pipeline_templates",
84 Dict{"pipeline_template": Dict{
87 "c1": map[string]string{"script": "script1"},
88 "c2": map[string]string{"script": "script2"}}}},
90 c.Assert(err, Equals, nil)
91 c.Assert(getback["name"], Equals, "tmp")
92 c.Assert(getback["components"].(map[string]interface{})["c2"].(map[string]interface{})["script"], Equals, "script2")
94 uuid := getback["uuid"].(string)
97 err = arv.Get("pipeline_templates", uuid, nil, &getback)
98 c.Assert(err, Equals, nil)
99 c.Assert(getback["name"], Equals, "tmp")
100 c.Assert(getback["components"].(map[string]interface{})["c1"].(map[string]interface{})["script"], Equals, "script1")
103 err = arv.Update("pipeline_templates", uuid,
105 "pipeline_template": Dict{"name": "tmp2"}},
107 c.Assert(err, Equals, nil)
108 c.Assert(getback["name"], Equals, "tmp2")
110 c.Assert(getback["uuid"].(string), Equals, uuid)
112 err = arv.Delete("pipeline_templates", uuid, nil, &getback)
113 c.Assert(err, Equals, nil)
114 c.Assert(getback["name"], Equals, "tmp2")
117 func (s *ServerRequiredSuite) TestErrorResponse(c *C) {
118 arv, _ := MakeArvadosClient()
120 getback := make(Dict)
123 err := arv.Create("logs",
124 Dict{"log": Dict{"bogus_attr": "foo"}},
126 c.Assert(err, ErrorMatches, "arvados API server error: .*")
127 c.Assert(err, ErrorMatches, ".*unknown attribute: bogus_attr.*")
128 c.Assert(err, FitsTypeOf, APIServerError{})
129 c.Assert(err.(APIServerError).HttpStatusCode, Equals, 422)
133 err := arv.Create("bogus",
134 Dict{"bogus": Dict{}},
136 c.Assert(err, ErrorMatches, "arvados API server error: .*")
137 c.Assert(err, ErrorMatches, ".*Path not found.*")
138 c.Assert(err, FitsTypeOf, APIServerError{})
139 c.Assert(err.(APIServerError).HttpStatusCode, Equals, 404)
143 func (s *ServerRequiredSuite) TestAPIDiscovery_Get_defaultCollectionReplication(c *C) {
144 arv, err := MakeArvadosClient()
145 value, err := arv.Discovery("defaultCollectionReplication")
147 c.Assert(value, NotNil)
150 func (s *ServerRequiredSuite) TestAPIDiscovery_Get_noSuchParameter(c *C) {
151 arv, err := MakeArvadosClient()
152 value, err := arv.Discovery("noSuchParameter")
153 c.Assert(err, NotNil)
154 c.Assert(value, IsNil)
157 type UnitSuite struct{}
159 func (s *UnitSuite) TestUUIDMatch(c *C) {
160 c.Assert(UUIDMatch("zzzzz-tpzed-000000000000000"), Equals, true)
161 c.Assert(UUIDMatch("zzzzz-zebra-000000000000000"), Equals, true)
162 c.Assert(UUIDMatch("00000-00000-zzzzzzzzzzzzzzz"), Equals, true)
163 c.Assert(UUIDMatch("ZEBRA-HORSE-AFRICANELEPHANT"), Equals, false)
164 c.Assert(UUIDMatch(" zzzzz-tpzed-000000000000000"), Equals, false)
165 c.Assert(UUIDMatch("d41d8cd98f00b204e9800998ecf8427e"), Equals, false)
166 c.Assert(UUIDMatch("d41d8cd98f00b204e9800998ecf8427e+0"), Equals, false)
167 c.Assert(UUIDMatch(""), Equals, false)
170 func (s *UnitSuite) TestPDHMatch(c *C) {
171 c.Assert(PDHMatch("zzzzz-tpzed-000000000000000"), Equals, false)
172 c.Assert(PDHMatch("d41d8cd98f00b204e9800998ecf8427e"), Equals, false)
173 c.Assert(PDHMatch("d41d8cd98f00b204e9800998ecf8427e+0"), Equals, true)
174 c.Assert(PDHMatch("d41d8cd98f00b204e9800998ecf8427e+12345"), Equals, true)
175 c.Assert(PDHMatch("d41d8cd98f00b204e9800998ecf8427e 12345"), Equals, false)
176 c.Assert(PDHMatch("D41D8CD98F00B204E9800998ECF8427E+12345"), Equals, false)
177 c.Assert(PDHMatch("d41d8cd98f00b204e9800998ecf8427e+12345 "), Equals, false)
178 c.Assert(PDHMatch("d41d8cd98f00b204e9800998ecf8427e+abcdef"), Equals, false)
179 c.Assert(PDHMatch("da39a3ee5e6b4b0d3255bfef95601890afd80709"), Equals, false)
180 c.Assert(PDHMatch("da39a3ee5e6b4b0d3255bfef95601890afd80709+0"), Equals, false)
181 c.Assert(PDHMatch("d41d8cd98f00b204e9800998ecf8427+12345"), Equals, false)
182 c.Assert(PDHMatch("d41d8cd98f00b204e9800998ecf8427e+12345\n"), Equals, false)
183 c.Assert(PDHMatch("+12345"), Equals, false)
184 c.Assert(PDHMatch(""), Equals, false)