for k, values := range req.Form {
for _, v := range values {
switch {
+ case boolParams[k]:
+ params[k] = stringToBool(v)
case v == "null" || v == "":
params[k] = nil
case strings.HasPrefix(v, "["):
}
return err
}
+
+var boolParams = map[string]bool{
+ "ensure_unique_name": true,
+ "include_trash": true,
+ "include_old_versions": true,
+}
+
+func stringToBool(s string) bool {
+ switch s {
+ case "", "false", "0":
+ return false
+ default:
+ return true
+ }
+}
package router
import (
+ "bytes"
"encoding/json"
"io"
"net/http"
return req, rw, jresp
}
+func (s *RouterSuite) TestCollectionParams(c *check.C) {
+ token := arvadostest.ActiveTokenV2
+
+ _, rw, jresp := s.doRequest(c, token, "GET", `/arvados/v1/collections?include_trash=true`, nil, nil)
+ c.Check(rw.Code, check.Equals, http.StatusOK)
+ c.Check(jresp["items_available"], check.FitsTypeOf, float64(0))
+
+ _, rw, jresp = s.doRequest(c, token, "GET", `/arvados/v1/collections`, nil, bytes.NewBufferString(`{"include_trash":true}`))
+ c.Check(rw.Code, check.Equals, http.StatusOK)
+ c.Check(jresp["items"], check.FitsTypeOf, []interface{}{})
+
+ _, rw, jresp = s.doRequest(c, token, "POST", `/arvados/v1/collections`, nil, bytes.NewBufferString(`ensure_unique_name=true`))
+ c.Check(rw.Code, check.Equals, http.StatusOK)
+ c.Check(jresp["uuid"], check.FitsTypeOf, "")
+
+ _, rw, jresp = s.doRequest(c, token, "POST", `/arvados/v1/collections?ensure_unique_name=true`, nil, nil)
+ c.Check(rw.Code, check.Equals, http.StatusOK)
+ c.Check(jresp["uuid"], check.FitsTypeOf, "")
+}
+
func (s *RouterSuite) TestContainerList(c *check.C) {
token := arvadostest.ActiveTokenV2