123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372 |
- // +build e2e
- // Copyright 2020-2021 InfluxData, Inc. All rights reserved.
- // Use of this source code is governed by MIT
- // license that can be found in the LICENSE file.
- package api_test
- import (
- "context"
- "fmt"
- "testing"
- influxdb2 "github.com/influxdata/influxdb-client-go/v2"
- "github.com/influxdata/influxdb-client-go/v2/api"
- "github.com/influxdata/influxdb-client-go/v2/domain"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
- )
- func TestOrganizationsAPI(t *testing.T) {
- client := influxdb2.NewClient(serverURL, authToken)
- orgsAPI := client.OrganizationsAPI()
- usersAPI := client.UsersAPI()
- orgName := "my-org-2"
- orgDescription := "my-org 2 description"
- ctx := context.Background()
- orgList, err := orgsAPI.GetOrganizations(ctx)
- require.Nil(t, err)
- require.NotNil(t, orgList)
- assert.Len(t, *orgList, 1)
- //test error
- org, err := orgsAPI.CreateOrganizationWithName(ctx, "")
- assert.NotNil(t, err)
- require.Nil(t, org)
- org, err = orgsAPI.CreateOrganizationWithName(ctx, orgName)
- require.Nil(t, err)
- require.NotNil(t, org)
- assert.Equal(t, orgName, org.Name)
- //test duplicit org
- _, err = orgsAPI.CreateOrganizationWithName(ctx, orgName)
- require.NotNil(t, err)
- org.Description = &orgDescription
- org, err = orgsAPI.UpdateOrganization(ctx, org)
- require.Nil(t, err)
- require.NotNil(t, org)
- assert.Equal(t, orgDescription, *org.Description)
- orgList, err = orgsAPI.GetOrganizations(ctx)
- require.Nil(t, err)
- require.NotNil(t, orgList)
- assert.Len(t, *orgList, 2)
- permission := &domain.Permission{
- Action: domain.PermissionActionWrite,
- Resource: domain.Resource{
- Type: domain.ResourceTypeBuckets,
- },
- }
- permissions := []domain.Permission{*permission}
- //create authorization for new org
- auth, err := client.AuthorizationsAPI().CreateAuthorizationWithOrgID(context.Background(), *org.Id, permissions)
- require.Nil(t, err)
- require.NotNil(t, auth)
- // create client with new auth token without permission
- clientOrg2 := influxdb2.NewClient(serverURL, *auth.Token)
- orgList, err = clientOrg2.OrganizationsAPI().GetOrganizations(ctx)
- require.Nil(t, err)
- require.NotNil(t, orgList)
- assert.Len(t, *orgList, 0)
- org2, err := orgsAPI.FindOrganizationByName(ctx, orgName)
- require.Nil(t, err)
- require.NotNil(t, org2)
- //find unknown org
- org2, err = orgsAPI.FindOrganizationByName(ctx, "not-existetn-org")
- assert.NotNil(t, err)
- assert.Nil(t, org2)
- //find org using token without org permission
- org2, err = clientOrg2.OrganizationsAPI().FindOrganizationByName(ctx, org.Name)
- assert.NotNil(t, err)
- assert.Nil(t, org2)
- err = client.AuthorizationsAPI().DeleteAuthorization(ctx, auth)
- require.Nil(t, err)
- members, err := orgsAPI.GetMembers(ctx, org)
- require.Nil(t, err)
- require.NotNil(t, members)
- require.Len(t, *members, 0)
- user, err := usersAPI.CreateUserWithName(ctx, "user-01")
- require.Nil(t, err)
- require.NotNil(t, user)
- member, err := orgsAPI.AddMember(ctx, org, user)
- require.Nil(t, err)
- require.NotNil(t, member)
- assert.Equal(t, *user.Id, *member.Id)
- assert.Equal(t, user.Name, member.Name)
- members, err = orgsAPI.GetMembers(ctx, org)
- require.Nil(t, err)
- require.NotNil(t, members)
- require.Len(t, *members, 1)
- org2, err = orgsAPI.FindOrganizationByID(ctx, *org.Id)
- require.Nil(t, err)
- require.NotNil(t, org2)
- assert.Equal(t, org.Name, org2.Name)
- orgs, err := orgsAPI.FindOrganizationsByUserID(ctx, *user.Id)
- require.Nil(t, err)
- require.NotNil(t, orgs)
- require.Len(t, *orgs, 1)
- assert.Equal(t, org.Name, (*orgs)[0].Name)
- orgName2 := "my-org-3"
- org2, err = orgsAPI.CreateOrganizationWithName(ctx, orgName2)
- require.Nil(t, err)
- require.NotNil(t, org2)
- assert.Equal(t, orgName2, org2.Name)
- orgList, err = orgsAPI.GetOrganizations(ctx)
- require.Nil(t, err)
- require.NotNil(t, orgList)
- assert.Len(t, *orgList, 3)
- owners, err := orgsAPI.GetOwners(ctx, org2)
- assert.Nil(t, err)
- assert.NotNil(t, owners)
- assert.Len(t, *owners, 1)
- owner, err := orgsAPI.AddOwner(ctx, org2, user)
- require.Nil(t, err)
- require.NotNil(t, owner)
- owners, err = orgsAPI.GetOwners(ctx, org2)
- require.Nil(t, err)
- require.NotNil(t, owners)
- assert.Len(t, *owners, 2)
- u, err := usersAPI.FindUserByName(ctx, "my-user")
- require.Nil(t, err)
- require.NotNil(t, u)
- err = orgsAPI.RemoveOwnerWithID(ctx, *org2.Id, *u.Id)
- require.Nil(t, err)
- owners, err = orgsAPI.GetOwners(ctx, org2)
- require.Nil(t, err)
- require.NotNil(t, owners)
- assert.Len(t, *owners, 1)
- orgs, err = orgsAPI.FindOrganizationsByUserID(ctx, *user.Id)
- require.Nil(t, err)
- require.NotNil(t, orgs)
- require.Len(t, *orgs, 2)
- err = orgsAPI.RemoveMemberWithID(ctx, *org.Id, *user.Id)
- require.Nil(t, err)
- members, err = orgsAPI.GetMembers(ctx, org)
- require.Nil(t, err)
- require.NotNil(t, members)
- require.Len(t, *members, 0)
- err = orgsAPI.DeleteOrganization(ctx, org)
- require.Nil(t, err)
- err = orgsAPI.DeleteOrganization(ctx, org2)
- assert.Nil(t, err)
- orgList, err = orgsAPI.GetOrganizations(ctx)
- require.Nil(t, err)
- require.NotNil(t, orgList)
- assert.Len(t, *orgList, 1)
- err = usersAPI.DeleteUser(ctx, user)
- require.Nil(t, err)
- }
- func TestOrganizationAPI_pagination(t *testing.T) {
- ctx := context.Background()
- client := influxdb2.NewClient(serverURL, authToken)
- orgsAPI := client.OrganizationsAPI()
- for i := 0; i < 50; i++ {
- org, err := orgsAPI.CreateOrganizationWithName(ctx, fmt.Sprintf("org-%02d", i+1))
- require.Nil(t, err)
- require.NotNil(t, org)
- }
- orgList, err := orgsAPI.GetOrganizations(ctx)
- require.Nil(t, err)
- require.NotNil(t, orgList)
- require.Len(t, *orgList, 20)
- orgList, err = orgsAPI.GetOrganizations(ctx, api.PagingWithOffset(20))
- require.Nil(t, err)
- require.NotNil(t, orgList)
- require.Len(t, *orgList, 20)
- orgList, err = orgsAPI.GetOrganizations(ctx, api.PagingWithOffset(40))
- require.Nil(t, err)
- require.NotNil(t, orgList)
- require.Len(t, *orgList, 11)
- orgList, err = orgsAPI.GetOrganizations(ctx, api.PagingWithLimit(100))
- require.Nil(t, err)
- require.NotNil(t, orgList)
- require.Len(t, *orgList, 51)
- for _, org := range *orgList {
- if org.Name == "my-org" {
- continue
- }
- err = orgsAPI.DeleteOrganization(ctx, &org)
- assert.Nil(t, err)
- }
- }
- func TestOrganizationAPI_failing(t *testing.T) {
- client := influxdb2.NewClient(serverURL, authToken)
- orgsAPI := client.OrganizationsAPI()
- ctx := context.Background()
- notExistingID := "aaaaaaaaaaaaaaaa"
- invalidID := "aaaaaa"
- org, err := orgsAPI.FindOrganizationByName(ctx, "my-org")
- require.Nil(t, err, err)
- require.NotNil(t, org)
- // Add member with invalid id
- member, err := orgsAPI.AddMemberWithID(ctx, *org.Id, notExistingID)
- assert.NotNil(t, err)
- assert.Nil(t, member)
- // get member with invalid id
- members, err := orgsAPI.GetMembersWithID(ctx, invalidID)
- assert.NotNil(t, err)
- assert.Nil(t, members)
- // get member with not existing id
- members, err = orgsAPI.GetMembersWithID(ctx, notExistingID)
- assert.NotNil(t, err)
- assert.Nil(t, members)
- //get owners with invalid id
- owners, err := orgsAPI.GetOwnersWithID(ctx, invalidID)
- assert.NotNil(t, err)
- assert.Nil(t, owners)
- //get owners with not existing id
- owners, err = orgsAPI.GetOwnersWithID(ctx, notExistingID)
- assert.NotNil(t, err)
- assert.Nil(t, owners)
- // look for not existent
- orgs, err := orgsAPI.FindOrganizationsByUserID(ctx, notExistingID)
- assert.Nil(t, err)
- assert.NotNil(t, orgs)
- assert.Len(t, *orgs, 0)
- // look for not existent - bug returns current org: https://github.com/influxdata/influxdb/issues/19110
- //orgs, err = orgsAPI.FindOrganizationsByUserID(ctx, invalidID)
- //assert.NotNil(t, err)
- //assert.Nil(t, orgs)
- // add owner with invalid ID
- owner, err := orgsAPI.AddOwnerWithID(ctx, *org.Id, notExistingID)
- assert.NotNil(t, err)
- assert.Nil(t, owner)
- // update with not existing id
- org.Id = ¬ExistingID
- org, err = orgsAPI.UpdateOrganization(ctx, org)
- assert.NotNil(t, err)
- assert.Nil(t, org)
- // remove owner with invalid ID
- err = orgsAPI.RemoveOwnerWithID(ctx, notExistingID, notExistingID)
- assert.NotNil(t, err)
- // find invalid id
- org, err = orgsAPI.FindOrganizationByID(ctx, notExistingID)
- assert.NotNil(t, err)
- assert.Nil(t, org)
- // remove invalid memberID
- err = orgsAPI.RemoveMemberWithID(ctx, notExistingID, notExistingID)
- assert.NotNil(t, err)
- // delete not existent org
- err = orgsAPI.DeleteOrganizationWithID(ctx, notExistingID)
- assert.NotNil(t, err)
- // delete invalid org
- err = orgsAPI.DeleteOrganizationWithID(ctx, invalidID)
- assert.NotNil(t, err)
- }
- func TestOrganizationAPI_requestFailing(t *testing.T) {
- client := influxdb2.NewClient("serverURL", authToken)
- orgsAPI := client.OrganizationsAPI()
- ctx := context.Background()
- anID := "aaaaaaaaaaaaaaaa"
- invalidID := "aaaaaa"
- org := &domain.Organization{Id: &anID}
- _, err := orgsAPI.GetOrganizations(ctx)
- assert.NotNil(t, err)
- _, err = orgsAPI.FindOrganizationByName(ctx, "my-org")
- assert.NotNil(t, err)
- _, err = orgsAPI.FindOrganizationByID(ctx, anID)
- assert.NotNil(t, err)
- _, err = orgsAPI.FindOrganizationsByUserID(ctx, anID)
- assert.NotNil(t, err)
- _, err = orgsAPI.CreateOrganizationWithName(ctx, "name")
- assert.NotNil(t, err)
- err = orgsAPI.DeleteOrganizationWithID(ctx, anID)
- assert.NotNil(t, err)
- _, err = orgsAPI.UpdateOrganization(ctx, org)
- assert.NotNil(t, err)
- _, err = orgsAPI.GetMembersWithID(ctx, invalidID)
- assert.NotNil(t, err)
- _, err = orgsAPI.AddMemberWithID(ctx, *org.Id, anID)
- assert.NotNil(t, err)
- // remove invalid memberID
- err = orgsAPI.RemoveMemberWithID(ctx, anID, anID)
- assert.NotNil(t, err)
- _, err = orgsAPI.GetOwnersWithID(ctx, invalidID)
- assert.NotNil(t, err)
- _, err = orgsAPI.AddOwnerWithID(ctx, *org.Id, anID)
- assert.NotNil(t, err)
- // remove owner with invalid ID
- err = orgsAPI.RemoveOwnerWithID(ctx, anID, anID)
- assert.NotNil(t, err)
- _, err = orgsAPI.GetOwnersWithID(ctx, invalidID)
- assert.NotNil(t, err)
- }
|