X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/c2aceca339ec3a6f3d853865cebd0efe348ff518..HEAD:/lib/controller/rpc/conn_test.go diff --git a/lib/controller/rpc/conn_test.go b/lib/controller/rpc/conn_test.go index eee8db9ac8..ed26e04117 100644 --- a/lib/controller/rpc/conn_test.go +++ b/lib/controller/rpc/conn_test.go @@ -10,6 +10,7 @@ import ( "os" "testing" + "git.arvados.org/arvados.git/lib/config" "git.arvados.org/arvados.git/sdk/go/arvados" "git.arvados.org/arvados.git/sdk/go/arvadostest" "git.arvados.org/arvados.git/sdk/go/ctxlog" @@ -39,13 +40,26 @@ type RPCSuite struct { func (s *RPCSuite) SetUpTest(c *check.C) { ctx := ctxlog.Context(context.Background(), ctxlog.TestLogger(c)) s.ctx = context.WithValue(ctx, contextKeyTestTokens, []string{arvadostest.ActiveToken}) - s.conn = NewConn("zzzzz", &url.URL{Scheme: "https", Host: os.Getenv("ARVADOS_TEST_API_HOST")}, true, func(ctx context.Context) ([]string, error) { +} + +func (s *RPCSuite) setupConn(c *check.C, host string) { + s.conn = NewConn("zzzzz", &url.URL{Scheme: "https", Host: host}, true, func(ctx context.Context) ([]string, error) { tokens, _ := ctx.Value(contextKeyTestTokens).([]string) return tokens, nil }) } -func (s *RPCSuite) TestLogin(c *check.C) { +func (s *RPCSuite) workbench2URL(c *check.C) string { + loader := config.NewLoader(nil, s.log) + cfg, err := loader.Load() + c.Assert(err, check.IsNil) + cluster, err := cfg.GetCluster("") + c.Assert(err, check.IsNil) + return cluster.Services.Workbench2.ExternalURL.String() +} + +func (s *RPCSuite) TestRailsLogin404(c *check.C) { + s.setupConn(c, os.Getenv("ARVADOS_TEST_API_HOST")) s.ctx = context.Background() opts := arvados.LoginOptions{ ReturnTo: "https://foo.example.com/bar", @@ -54,17 +68,30 @@ func (s *RPCSuite) TestLogin(c *check.C) { c.Check(err.(*arvados.TransactionError).StatusCode, check.Equals, 404) } -func (s *RPCSuite) TestLogout(c *check.C) { +func (s *RPCSuite) TestRailsLogout404(c *check.C) { + s.setupConn(c, os.Getenv("ARVADOS_TEST_API_HOST")) s.ctx = context.Background() opts := arvados.LogoutOptions{ ReturnTo: "https://foo.example.com/bar", } + _, err := s.conn.Logout(s.ctx, opts) + c.Check(err.(*arvados.TransactionError).StatusCode, check.Equals, 404) +} + +func (s *RPCSuite) TestControllerLogout(c *check.C) { + s.setupConn(c, os.Getenv("ARVADOS_API_HOST")) + s.ctx = context.Background() + url := s.workbench2URL(c) + opts := arvados.LogoutOptions{ + ReturnTo: url, + } resp, err := s.conn.Logout(s.ctx, opts) c.Check(err, check.IsNil) - c.Check(resp.RedirectLocation, check.Equals, opts.ReturnTo) + c.Check(resp.RedirectLocation, check.Equals, url) } func (s *RPCSuite) TestCollectionCreate(c *check.C) { + s.setupConn(c, os.Getenv("ARVADOS_TEST_API_HOST")) coll, err := s.conn.CollectionCreate(s.ctx, arvados.CreateOptions{Attrs: map[string]interface{}{ "owner_uuid": arvadostest.ActiveUserUUID, "portable_data_hash": "d41d8cd98f00b204e9800998ecf8427e+0", @@ -73,22 +100,24 @@ func (s *RPCSuite) TestCollectionCreate(c *check.C) { c.Check(coll.UUID, check.HasLen, 27) } -func (s *RPCSuite) TestSpecimenCRUD(c *check.C) { - sp, err := s.conn.SpecimenCreate(s.ctx, arvados.CreateOptions{Attrs: map[string]interface{}{ - "owner_uuid": arvadostest.ActiveUserUUID, - "properties": map[string]string{"foo": "bar"}, +func (s *RPCSuite) TestGroupCRUD(c *check.C) { + s.setupConn(c, os.Getenv("ARVADOS_TEST_API_HOST")) + sp, err := s.conn.GroupCreate(s.ctx, arvados.CreateOptions{Attrs: map[string]interface{}{ + "group_class": "project", + "owner_uuid": arvadostest.ActiveUserUUID, + "properties": map[string]string{"foo": "bar"}, }}) c.Check(err, check.IsNil) c.Check(sp.UUID, check.HasLen, 27) c.Check(sp.Properties, check.HasLen, 1) c.Check(sp.Properties["foo"], check.Equals, "bar") - spGet, err := s.conn.SpecimenGet(s.ctx, arvados.GetOptions{UUID: sp.UUID}) + spGet, err := s.conn.GroupGet(s.ctx, arvados.GetOptions{UUID: sp.UUID}) c.Check(err, check.IsNil) c.Check(spGet.UUID, check.Equals, sp.UUID) c.Check(spGet.Properties["foo"], check.Equals, "bar") - spList, err := s.conn.SpecimenList(s.ctx, arvados.ListOptions{Limit: -1, Filters: []arvados.Filter{{"uuid", "=", sp.UUID}}}) + spList, err := s.conn.GroupList(s.ctx, arvados.ListOptions{Limit: -1, Filters: []arvados.Filter{{"uuid", "=", sp.UUID}}}) c.Check(err, check.IsNil) c.Check(spList.ItemsAvailable, check.Equals, 1) c.Assert(spList.Items, check.HasLen, 1) @@ -96,12 +125,12 @@ func (s *RPCSuite) TestSpecimenCRUD(c *check.C) { c.Check(spList.Items[0].Properties["foo"], check.Equals, "bar") anonCtx := context.WithValue(context.Background(), contextKeyTestTokens, []string{arvadostest.AnonymousToken}) - spList, err = s.conn.SpecimenList(anonCtx, arvados.ListOptions{Limit: -1, Filters: []arvados.Filter{{"uuid", "=", sp.UUID}}}) + spList, err = s.conn.GroupList(anonCtx, arvados.ListOptions{Limit: -1, Filters: []arvados.Filter{{"uuid", "=", sp.UUID}}}) c.Check(err, check.IsNil) c.Check(spList.ItemsAvailable, check.Equals, 0) c.Check(spList.Items, check.HasLen, 0) - spDel, err := s.conn.SpecimenDelete(s.ctx, arvados.DeleteOptions{UUID: sp.UUID}) + spDel, err := s.conn.GroupDelete(s.ctx, arvados.DeleteOptions{UUID: sp.UUID}) c.Check(err, check.IsNil) c.Check(spDel.UUID, check.Equals, sp.UUID) }