4 "git.curoverse.com/arvados.git/sdk/go/arvadostest"
11 // Gocheck boilerplate
12 func Test(t *testing.T) {
16 var _ = Suite(&ServerRequiredSuite{})
18 // Tests that require the Keep server running
19 type ServerRequiredSuite struct{}
21 func (s *ServerRequiredSuite) SetUpSuite(c *C) {
22 arvadostest.StartAPI()
23 arvadostest.StartKeep()
26 func (s *ServerRequiredSuite) SetUpTest(c *C) {
27 arvadostest.ResetEnv()
30 func (s *ServerRequiredSuite) TestMakeArvadosClientSecure(c *C) {
31 os.Setenv("ARVADOS_API_HOST_INSECURE", "")
32 kc, err := MakeArvadosClient()
33 c.Assert(err, Equals, nil)
34 c.Check(kc.ApiServer, Equals, os.Getenv("ARVADOS_API_HOST"))
35 c.Check(kc.ApiToken, Equals, os.Getenv("ARVADOS_API_TOKEN"))
36 c.Check(kc.ApiInsecure, Equals, false)
39 func (s *ServerRequiredSuite) TestMakeArvadosClientInsecure(c *C) {
40 os.Setenv("ARVADOS_API_HOST_INSECURE", "true")
41 kc, err := MakeArvadosClient()
42 c.Assert(err, Equals, nil)
43 c.Check(kc.ApiInsecure, Equals, true)
44 c.Check(kc.ApiServer, Equals, os.Getenv("ARVADOS_API_HOST"))
45 c.Check(kc.ApiToken, Equals, os.Getenv("ARVADOS_API_TOKEN"))
46 c.Check(kc.Client.Transport.(*http.Transport).TLSClientConfig.InsecureSkipVerify, Equals, true)
49 func (s *ServerRequiredSuite) TestGetEmptyUUID(c *C) {
50 arv, err := MakeArvadosClient()
53 err = arv.Get("collections", "", nil, &getback)
54 c.Assert(err, FitsTypeOf, APIServerError{})
55 c.Assert(err.(APIServerError).HttpStatusCode, Equals, http.StatusNotFound)
56 c.Assert(len(getback), Equals, 0)
59 func (s *ServerRequiredSuite) TestCreatePipelineTemplate(c *C) {
60 arv, err := MakeArvadosClient()
63 err = arv.Create("pipeline_templates",
64 Dict{"pipeline_template": Dict{
67 "c1": map[string]string{"script": "script1"},
68 "c2": map[string]string{"script": "script2"}}}},
70 c.Assert(err, Equals, nil)
71 c.Assert(getback["name"], Equals, "tmp")
72 c.Assert(getback["components"].(map[string]interface{})["c2"].(map[string]interface{})["script"], Equals, "script2")
74 uuid := getback["uuid"].(string)
77 err = arv.Get("pipeline_templates", uuid, nil, &getback)
78 c.Assert(err, Equals, nil)
79 c.Assert(getback["name"], Equals, "tmp")
80 c.Assert(getback["components"].(map[string]interface{})["c1"].(map[string]interface{})["script"], Equals, "script1")
83 err = arv.Update("pipeline_templates", uuid,
85 "pipeline_template": Dict{"name": "tmp2"}},
87 c.Assert(err, Equals, nil)
88 c.Assert(getback["name"], Equals, "tmp2")
90 c.Assert(getback["uuid"].(string), Equals, uuid)
92 err = arv.Delete("pipeline_templates", uuid, nil, &getback)
93 c.Assert(err, Equals, nil)
94 c.Assert(getback["name"], Equals, "tmp2")
97 func (s *ServerRequiredSuite) TestErrorResponse(c *C) {
98 arv, _ := MakeArvadosClient()
100 getback := make(Dict)
103 err := arv.Create("logs",
104 Dict{"log": Dict{"bogus_attr": "foo"}},
106 c.Assert(err, ErrorMatches, "arvados API server error: .*")
107 c.Assert(err, ErrorMatches, ".*unknown attribute: bogus_attr.*")
108 c.Assert(err, FitsTypeOf, APIServerError{})
109 c.Assert(err.(APIServerError).HttpStatusCode, Equals, 422)
113 err := arv.Create("bogus",
114 Dict{"bogus": Dict{}},
116 c.Assert(err, ErrorMatches, "arvados API server error: .*")
117 c.Assert(err, ErrorMatches, ".*Path not found.*")
118 c.Assert(err, FitsTypeOf, APIServerError{})
119 c.Assert(err.(APIServerError).HttpStatusCode, Equals, 404)
123 func (s *ServerRequiredSuite) TestAPIDiscovery_Get_defaultCollectionReplication(c *C) {
124 arv, err := MakeArvadosClient()
125 value, err := arv.Discovery("defaultCollectionReplication")
127 c.Assert(value, NotNil)
130 func (s *ServerRequiredSuite) TestAPIDiscovery_Get_noSuchParameter(c *C) {
131 arv, err := MakeArvadosClient()
132 value, err := arv.Discovery("noSuchParameter")
133 c.Assert(err, NotNil)
134 c.Assert(value, IsNil)