authorizations_e2e_test.go 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. // +build e2e
  2. // Copyright 2020-2021 InfluxData, Inc. All rights reserved.
  3. // Use of this source code is governed by MIT
  4. // license that can be found in the LICENSE file.
  5. package api_test
  6. import (
  7. "context"
  8. "os"
  9. "testing"
  10. influxdb2 "github.com/influxdata/influxdb-client-go/v2"
  11. "github.com/influxdata/influxdb-client-go/v2/domain"
  12. "github.com/stretchr/testify/assert"
  13. "github.com/stretchr/testify/require"
  14. )
  15. var authToken string
  16. var serverURL string
  17. func getEnvValue(key, defVal string) string {
  18. if val, ok := os.LookupEnv(key); ok {
  19. return val
  20. } else {
  21. return defVal
  22. }
  23. }
  24. func init() {
  25. authToken = getEnvValue("INFLUXDB2_TOKEN", "my-token")
  26. serverURL = getEnvValue("INFLUXDB2_URL", "http://localhost:8086")
  27. }
  28. func TestAuthorizationsAPI(t *testing.T) {
  29. client := influxdb2.NewClient(serverURL, authToken)
  30. authAPI := client.AuthorizationsAPI()
  31. listRes, err := authAPI.GetAuthorizations(context.Background())
  32. require.Nil(t, err)
  33. require.NotNil(t, listRes)
  34. assert.Len(t, *listRes, 1)
  35. orgName := "my-org"
  36. org, err := client.OrganizationsAPI().FindOrganizationByName(context.Background(), orgName)
  37. require.Nil(t, err)
  38. require.NotNil(t, org)
  39. assert.Equal(t, orgName, org.Name)
  40. permission := &domain.Permission{
  41. Action: domain.PermissionActionWrite,
  42. Resource: domain.Resource{
  43. Type: domain.ResourceTypeBuckets,
  44. },
  45. }
  46. permissions := []domain.Permission{*permission}
  47. auth, err := authAPI.CreateAuthorizationWithOrgID(context.Background(), *org.Id, permissions)
  48. require.Nil(t, err)
  49. require.NotNil(t, auth)
  50. assert.Equal(t, domain.AuthorizationUpdateRequestStatusActive, *auth.Status, *auth.Status)
  51. listRes, err = authAPI.GetAuthorizations(context.Background())
  52. require.Nil(t, err)
  53. require.NotNil(t, listRes)
  54. assert.Len(t, *listRes, 2)
  55. listRes, err = authAPI.FindAuthorizationsByUserName(context.Background(), "my-user")
  56. require.Nil(t, err)
  57. require.NotNil(t, listRes)
  58. assert.Len(t, *listRes, 2)
  59. listRes, err = authAPI.FindAuthorizationsByOrgID(context.Background(), *org.Id)
  60. require.Nil(t, err)
  61. require.NotNil(t, listRes)
  62. assert.Len(t, *listRes, 2)
  63. listRes, err = authAPI.FindAuthorizationsByOrgName(context.Background(), "my-org")
  64. require.Nil(t, err)
  65. require.NotNil(t, listRes)
  66. assert.Len(t, *listRes, 2)
  67. user, err := client.UsersAPI().FindUserByName(context.Background(), "my-user")
  68. require.Nil(t, err)
  69. require.NotNil(t, user)
  70. listRes, err = authAPI.FindAuthorizationsByUserID(context.Background(), *user.Id)
  71. require.Nil(t, err)
  72. require.NotNil(t, listRes)
  73. assert.Len(t, *listRes, 2)
  74. listRes, err = authAPI.FindAuthorizationsByOrgName(context.Background(), "not-existent-org")
  75. require.Nil(t, listRes)
  76. require.NotNil(t, err)
  77. //assert.Len(t, *listRes, 0)
  78. auth, err = authAPI.UpdateAuthorizationStatus(context.Background(), auth, domain.AuthorizationUpdateRequestStatusInactive)
  79. require.Nil(t, err)
  80. require.NotNil(t, auth)
  81. assert.Equal(t, domain.AuthorizationUpdateRequestStatusInactive, *auth.Status, *auth.Status)
  82. listRes, err = authAPI.GetAuthorizations(context.Background())
  83. require.Nil(t, err)
  84. require.NotNil(t, listRes)
  85. assert.Len(t, *listRes, 2)
  86. err = authAPI.DeleteAuthorization(context.Background(), auth)
  87. require.Nil(t, err)
  88. listRes, err = authAPI.GetAuthorizations(context.Background())
  89. require.Nil(t, err)
  90. require.NotNil(t, listRes)
  91. assert.Len(t, *listRes, 1)
  92. }
  93. func TestAuthorizationsAPI_Failing(t *testing.T) {
  94. client := influxdb2.NewClient(serverURL, authToken)
  95. authAPI := client.AuthorizationsAPI()
  96. invalidID := "xcv"
  97. notExistentID := "100000000000000"
  98. listRes, err := authAPI.FindAuthorizationsByUserName(context.Background(), "invalid-user")
  99. assert.NotNil(t, err)
  100. assert.Nil(t, listRes)
  101. listRes, err = authAPI.FindAuthorizationsByUserID(context.Background(), invalidID)
  102. assert.NotNil(t, err)
  103. assert.Nil(t, listRes)
  104. listRes, err = authAPI.FindAuthorizationsByOrgID(context.Background(), notExistentID)
  105. assert.NotNil(t, err)
  106. assert.Nil(t, listRes)
  107. listRes, err = authAPI.FindAuthorizationsByOrgName(context.Background(), "not-existing-org")
  108. assert.NotNil(t, err)
  109. assert.Nil(t, listRes)
  110. org, err := client.OrganizationsAPI().FindOrganizationByName(context.Background(), "my-org")
  111. require.Nil(t, err)
  112. require.NotNil(t, org)
  113. auth, err := authAPI.CreateAuthorizationWithOrgID(context.Background(), *org.Id, nil)
  114. assert.NotNil(t, err)
  115. assert.Nil(t, auth)
  116. permission := &domain.Permission{
  117. Action: domain.PermissionActionWrite,
  118. Resource: domain.Resource{
  119. Type: domain.ResourceTypeBuckets,
  120. },
  121. }
  122. permissions := []domain.Permission{*permission}
  123. auth, err = authAPI.CreateAuthorizationWithOrgID(context.Background(), notExistentID, permissions)
  124. assert.NotNil(t, err)
  125. assert.Nil(t, auth)
  126. auth, err = authAPI.UpdateAuthorizationStatusWithID(context.Background(), notExistentID, domain.AuthorizationUpdateRequestStatusInactive)
  127. assert.NotNil(t, err)
  128. assert.Nil(t, auth)
  129. err = authAPI.DeleteAuthorizationWithID(context.Background(), notExistentID)
  130. assert.NotNil(t, err)
  131. }
  132. func TestAuthorizationsAPI_requestFailing(t *testing.T) {
  133. client := influxdb2.NewClientWithOptions("htp://localhost:9910", authToken, influxdb2.DefaultOptions().SetHTTPRequestTimeout(1))
  134. authAPI := client.AuthorizationsAPI()
  135. listRes, err := authAPI.GetAuthorizations(context.Background())
  136. assert.NotNil(t, err)
  137. assert.Nil(t, listRes)
  138. permission := &domain.Permission{
  139. Action: domain.PermissionActionWrite,
  140. Resource: domain.Resource{
  141. Type: domain.ResourceTypeBuckets,
  142. },
  143. }
  144. permissions := []domain.Permission{*permission}
  145. auth, err := authAPI.CreateAuthorizationWithOrgID(context.Background(), "1000000000000000000", permissions)
  146. assert.NotNil(t, err)
  147. assert.Nil(t, auth)
  148. auth, err = authAPI.UpdateAuthorizationStatusWithID(context.Background(), "1000000000000000000", domain.AuthorizationUpdateRequestStatusInactive)
  149. assert.NotNil(t, err)
  150. assert.Nil(t, auth)
  151. err = authAPI.DeleteAuthorizationWithID(context.Background(), "1000000000000000000")
  152. assert.NotNil(t, err)
  153. }