github.com/esnet/gdg@v0.6.1-0.20240412190737-6b6eba9c14d8/test/organizations_integration_test.go (about)

     1  package test
     2  
     3  import (
     4  	"github.com/esnet/gdg/internal/service"
     5  	"github.com/gosimple/slug"
     6  	"github.com/grafana/grafana-openapi-client-go/models"
     7  	"golang.org/x/exp/slices"
     8  	"os"
     9  	"sort"
    10  	"testing"
    11  
    12  	"github.com/stretchr/testify/assert"
    13  )
    14  
    15  func TestOrganizationCrud(t *testing.T) {
    16  	if testing.Short() {
    17  		t.Skip("skipping integration test")
    18  	}
    19  	if os.Getenv("TEST_TOKEN_CONFIG") == "1" {
    20  		t.Skip("Skipping Token configuration, Organization CRUD requires Basic SecureData")
    21  	}
    22  	apiClient, _, cleanup := initTest(t, nil)
    23  	defer cleanup()
    24  	orgs := apiClient.ListOrganizations(service.NewOrganizationFilter(), true)
    25  	assert.Equal(t, len(orgs), 1)
    26  	mainOrg := orgs[0]
    27  	assert.Equal(t, mainOrg.Organization.ID, int64(1))
    28  	assert.Equal(t, mainOrg.Organization.Name, "Main Org.")
    29  	newOrgs := apiClient.UploadOrganizations(service.NewOrganizationFilter())
    30  	assert.Equal(t, len(newOrgs), 2)
    31  	assert.True(t, slices.Contains(newOrgs, "DumbDumb"))
    32  	assert.True(t, slices.Contains(newOrgs, "Moo"))
    33  	//Filter Org
    34  	orgs = apiClient.ListOrganizations(service.NewOrganizationFilter("DumbDumb"), true)
    35  	assert.Equal(t, len(orgs), 1)
    36  	assert.Equal(t, orgs[0].Organization.Name, "DumbDumb")
    37  
    38  }
    39  
    40  func TestOrganizationUserMembership(t *testing.T) {
    41  	if testing.Short() {
    42  		t.Skip("skipping integration test")
    43  	}
    44  	if os.Getenv("TEST_TOKEN_CONFIG") == "1" {
    45  		t.Skip("Skipping Token configuration, Organization CRUD requires Basic SecureData")
    46  	}
    47  	apiClient, _, cleanup := initTest(t, nil)
    48  	defer cleanup()
    49  	//Create Orgs in case they aren't already present.
    50  	apiClient.UploadOrganizations(service.NewOrganizationFilter())
    51  	orgs := apiClient.ListOrganizations(service.NewOrganizationFilter(), true)
    52  	sort.Slice(orgs, func(a, b int) bool {
    53  		return orgs[a].Organization.ID < orgs[b].Organization.ID
    54  	})
    55  	newOrg := orgs[2]
    56  	//Create Users in case they aren't already present.
    57  	apiClient.UploadUsers(service.NewUserFilter(""))
    58  	// get users
    59  	users := apiClient.ListUsers(service.NewUserFilter(""))
    60  	assert.Equal(t, len(users), 2)
    61  	var orgUser *models.UserSearchHitDTO
    62  	for _, u := range users {
    63  		if u.Login == "tux" {
    64  			orgUser = u
    65  			break
    66  		}
    67  	}
    68  	assert.NotNil(t, orgUser)
    69  	//Reset if any state exists.
    70  	err := apiClient.DeleteUserFromOrg(slug.Make(newOrg.Organization.Name), orgUser.ID)
    71  	assert.Nil(t, err)
    72  	//Start CRUD test
    73  	orgUsers := apiClient.ListOrgUsers(newOrg.Organization.ID)
    74  	assert.Equal(t, len(orgUsers), 1)
    75  	assert.Equal(t, orgUsers[0].Login, "admin")
    76  	assert.Equal(t, orgUsers[0].Role, "Admin")
    77  
    78  	err = apiClient.AddUserToOrg("Admin", slug.Make(newOrg.Organization.Name), orgUser.ID)
    79  	assert.Nil(t, err)
    80  	orgUsers = apiClient.ListOrgUsers(newOrg.Organization.ID)
    81  	assert.Equal(t, len(orgUsers), 2)
    82  	assert.Equal(t, orgUsers[1].Role, "Admin")
    83  	err = apiClient.UpdateUserInOrg("Viewer", slug.Make(newOrg.Organization.Name), orgUser.ID)
    84  	orgUsers = apiClient.ListOrgUsers(newOrg.Organization.ID)
    85  	assert.Nil(t, err)
    86  	assert.Equal(t, orgUsers[1].Role, "Viewer")
    87  	err = apiClient.DeleteUserFromOrg(slug.Make(newOrg.Organization.Name), orgUser.ID)
    88  	orgUsers = apiClient.ListOrgUsers(newOrg.Organization.ID)
    89  	assert.Equal(t, len(orgUsers), 1)
    90  	assert.Nil(t, err)
    91  }
    92  
    93  func TestOrganizationProperties(t *testing.T) {
    94  	if testing.Short() {
    95  		t.Skip("skipping integration test")
    96  	}
    97  	if os.Getenv("TEST_TOKEN_CONFIG") == "1" {
    98  		t.Skip("Skipping Token configuration, Organization CRUD requires Basic SecureData")
    99  	}
   100  	apiClient, _, cleanup := initTest(t, nil)
   101  	defer cleanup()
   102  	apiClient.UploadDashboards(service.NewDashboardFilter("", "", ""))
   103  	defer apiClient.DeleteAllDashboards(service.NewDashboardFilter("", "", ""))
   104  	prefs, err := apiClient.GetOrgPreferences("Main Org.")
   105  	assert.Nil(t, err)
   106  	prefs.HomeDashboardUID = "000000003"
   107  	prefs.Theme = "dark"
   108  	prefs.WeekStart = "Saturday"
   109  	err = apiClient.UploadOrgPreferences("Main Org.", prefs)
   110  	assert.Nil(t, err)
   111  	prefs, err = apiClient.GetOrgPreferences("Main Org.")
   112  	assert.Nil(t, err)
   113  	assert.NotNil(t, prefs)
   114  	assert.Equal(t, prefs.Theme, "dark")
   115  	assert.Equal(t, prefs.WeekStart, "Saturday")
   116  	assert.Equal(t, prefs.HomeDashboardUID, "000000003")
   117  }