influxdb/tests/pipeline/fixture.go

77 lines
1.9 KiB
Go

package pipeline
import (
"fmt"
"testing"
"github.com/influxdata/influxdb/v2"
"github.com/influxdata/influxdb/v2/kit/platform"
"github.com/influxdata/influxdb/v2/tests"
)
type ClientTag string
const (
AdminTag ClientTag = "admin"
OwnerTag ClientTag = "owner"
MemberTag ClientTag = "member"
NoAccessTag ClientTag = "no_access"
)
var AllClientTags = []ClientTag{AdminTag, OwnerTag, MemberTag, NoAccessTag}
// BaseFixture is a Fixture with multiple users in the system.
type BaseFixture struct {
Admin *tests.Client
Owner *tests.Client
Member *tests.Client
NoAccess *tests.Client
}
// NewBaseFixture creates a BaseFixture with and admin, an org owner, a member, and an outsider
// for the given orgID and bucketID.
func NewBaseFixture(t *testing.T, p *tests.Pipeline, orgID, bucketID platform.ID) BaseFixture {
fx := BaseFixture{}
admin := p.MustNewAdminClient()
fx.Admin = admin
cli, id, err := p.BrowserFor(orgID, bucketID, "owner")
if err != nil {
t.Fatalf("error while creating browser client: %v", err)
}
admin.MustAddOwner(t, id, influxdb.OrgsResourceType, orgID)
cli.UserID = id
fx.Owner = cli
cli, id, err = p.BrowserFor(orgID, bucketID, "member")
if err != nil {
t.Fatalf("error while creating browser client: %v", err)
}
admin.MustAddMember(t, id, influxdb.OrgsResourceType, orgID)
cli.UserID = id
fx.Member = cli
cli, id, err = p.BrowserFor(orgID, bucketID, "no_access")
if err != nil {
t.Fatalf("error while creating browser client: %v", err)
}
cli.UserID = id
fx.NoAccess = cli
return fx
}
// GetClient returns the client associated with the given tag.
func (f BaseFixture) GetClient(tag ClientTag) *tests.Client {
switch tag {
case AdminTag:
return f.Admin
case OwnerTag:
return f.Owner
case MemberTag:
return f.Member
case NoAccessTag:
return f.NoAccess
default:
panic(fmt.Sprintf("unknown tag %s", tag))
}
}