github.com/influxdata/influxdb/v2@v2.7.6/tests/pipeline/fixture.go (about)

     1  package pipeline
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/influxdata/influxdb/v2"
     8  	"github.com/influxdata/influxdb/v2/kit/platform"
     9  	"github.com/influxdata/influxdb/v2/tests"
    10  )
    11  
    12  type ClientTag string
    13  
    14  const (
    15  	AdminTag    ClientTag = "admin"
    16  	OwnerTag    ClientTag = "owner"
    17  	MemberTag   ClientTag = "member"
    18  	NoAccessTag ClientTag = "no_access"
    19  )
    20  
    21  var AllClientTags = []ClientTag{AdminTag, OwnerTag, MemberTag, NoAccessTag}
    22  
    23  // BaseFixture is a Fixture with multiple users in the system.
    24  type BaseFixture struct {
    25  	Admin    *tests.Client
    26  	Owner    *tests.Client
    27  	Member   *tests.Client
    28  	NoAccess *tests.Client
    29  }
    30  
    31  // NewBaseFixture creates a BaseFixture with and admin, an org owner, a member, and an outsider
    32  // for the given orgID and bucketID.
    33  func NewBaseFixture(t *testing.T, p *tests.Pipeline, orgID, bucketID platform.ID) BaseFixture {
    34  	fx := BaseFixture{}
    35  	admin := p.MustNewAdminClient()
    36  	fx.Admin = admin
    37  	cli, id, err := p.BrowserFor(orgID, bucketID, "owner")
    38  	if err != nil {
    39  		t.Fatalf("error while creating browser client: %v", err)
    40  	}
    41  	admin.MustAddOwner(t, id, influxdb.OrgsResourceType, orgID)
    42  	cli.UserID = id
    43  	fx.Owner = cli
    44  
    45  	cli, id, err = p.BrowserFor(orgID, bucketID, "member")
    46  	if err != nil {
    47  		t.Fatalf("error while creating browser client: %v", err)
    48  	}
    49  	admin.MustAddMember(t, id, influxdb.OrgsResourceType, orgID)
    50  	cli.UserID = id
    51  	fx.Member = cli
    52  
    53  	cli, id, err = p.BrowserFor(orgID, bucketID, "no_access")
    54  	if err != nil {
    55  		t.Fatalf("error while creating browser client: %v", err)
    56  	}
    57  	cli.UserID = id
    58  	fx.NoAccess = cli
    59  	return fx
    60  }
    61  
    62  // GetClient returns the client associated with the given tag.
    63  func (f BaseFixture) GetClient(tag ClientTag) *tests.Client {
    64  	switch tag {
    65  	case AdminTag:
    66  		return f.Admin
    67  	case OwnerTag:
    68  		return f.Owner
    69  	case MemberTag:
    70  		return f.Member
    71  	case NoAccessTag:
    72  		return f.NoAccess
    73  	default:
    74  		panic(fmt.Sprintf("unknown tag %s", tag))
    75  	}
    76  }