integration_test.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package test
  2. import (
  3. "context"
  4. "testing"
  5. "github.com/seaweedfs/seaweedfs/weed/credential"
  6. "github.com/seaweedfs/seaweedfs/weed/pb/iam_pb"
  7. "github.com/seaweedfs/seaweedfs/weed/util"
  8. // Import all store implementations to register them
  9. _ "github.com/seaweedfs/seaweedfs/weed/credential/filer_etc"
  10. _ "github.com/seaweedfs/seaweedfs/weed/credential/memory"
  11. _ "github.com/seaweedfs/seaweedfs/weed/credential/postgres"
  12. )
  13. func TestStoreRegistration(t *testing.T) {
  14. // Test that stores are registered
  15. storeNames := credential.GetAvailableStores()
  16. if len(storeNames) == 0 {
  17. t.Fatal("No credential stores registered")
  18. }
  19. expectedStores := []string{string(credential.StoreTypeFilerEtc), string(credential.StoreTypeMemory), string(credential.StoreTypePostgres)}
  20. // Verify all expected stores are present
  21. for _, expected := range expectedStores {
  22. found := false
  23. for _, storeName := range storeNames {
  24. if string(storeName) == expected {
  25. found = true
  26. break
  27. }
  28. }
  29. if !found {
  30. t.Errorf("Expected store not found: %s", expected)
  31. }
  32. }
  33. t.Logf("Available stores: %v", storeNames)
  34. }
  35. func TestMemoryStoreIntegration(t *testing.T) {
  36. // Test creating credential manager with memory store
  37. config := util.GetViper()
  38. cm, err := credential.NewCredentialManager(credential.StoreTypeMemory, config, "test.")
  39. if err != nil {
  40. t.Fatalf("Failed to create memory credential manager: %v", err)
  41. }
  42. defer cm.Shutdown()
  43. // Test that the store is of the correct type
  44. if cm.GetStore().GetName() != credential.StoreTypeMemory {
  45. t.Errorf("Expected memory store, got %s", cm.GetStore().GetName())
  46. }
  47. // Test basic operations
  48. ctx := context.Background()
  49. // Create test user
  50. testUser := &iam_pb.Identity{
  51. Name: "testuser",
  52. Actions: []string{"Read", "Write"},
  53. Account: &iam_pb.Account{
  54. Id: "123456789012",
  55. DisplayName: "Test User",
  56. EmailAddress: "test@example.com",
  57. },
  58. Credentials: []*iam_pb.Credential{
  59. {
  60. AccessKey: "AKIAIOSFODNN7EXAMPLE",
  61. SecretKey: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
  62. },
  63. },
  64. }
  65. // Test CreateUser
  66. err = cm.CreateUser(ctx, testUser)
  67. if err != nil {
  68. t.Fatalf("CreateUser failed: %v", err)
  69. }
  70. // Test GetUser
  71. user, err := cm.GetUser(ctx, "testuser")
  72. if err != nil {
  73. t.Fatalf("GetUser failed: %v", err)
  74. }
  75. if user.Name != "testuser" {
  76. t.Errorf("Expected user name 'testuser', got %s", user.Name)
  77. }
  78. // Test ListUsers
  79. users, err := cm.ListUsers(ctx)
  80. if err != nil {
  81. t.Fatalf("ListUsers failed: %v", err)
  82. }
  83. if len(users) != 1 || users[0] != "testuser" {
  84. t.Errorf("Expected ['testuser'], got %v", users)
  85. }
  86. // Test GetUserByAccessKey
  87. userByKey, err := cm.GetUserByAccessKey(ctx, "AKIAIOSFODNN7EXAMPLE")
  88. if err != nil {
  89. t.Fatalf("GetUserByAccessKey failed: %v", err)
  90. }
  91. if userByKey.Name != "testuser" {
  92. t.Errorf("Expected user name 'testuser', got %s", userByKey.Name)
  93. }
  94. // Test DeleteUser
  95. err = cm.DeleteUser(ctx, "testuser")
  96. if err != nil {
  97. t.Fatalf("DeleteUser failed: %v", err)
  98. }
  99. // Verify user was deleted
  100. _, err = cm.GetUser(ctx, "testuser")
  101. if err != credential.ErrUserNotFound {
  102. t.Errorf("Expected ErrUserNotFound, got %v", err)
  103. }
  104. }