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 }