Skip to content

Commit

Permalink
Feat: added test for AdminCheck
Browse files Browse the repository at this point in the history
  • Loading branch information
elraphty committed Dec 3, 2024
1 parent 3b261f4 commit 4da5e61
Showing 1 changed file with 126 additions and 0 deletions.
126 changes: 126 additions & 0 deletions auth/auth_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
package auth

import (
"strings"
"testing"

"github.com/stakwork/sphinx-tribes/config"
"github.com/stretchr/testify/assert"
)

// Mock configuration for testing
var testConfig = struct {
SuperAdmins []string
}{
SuperAdmins: []string{"admin1", "admin2", "admin3"},
}

func TestAdminCheck(t *testing.T) {
t.Setenv("SUPER_ADMINS", strings.Join(testConfig.SuperAdmins, ","))

tests := []struct {
name string
pubkey interface{}
expected bool
}{
{
name: "Valid super admin pubkey",
pubkey: "admin1",
expected: true,
},
{
name: "Invalid super admin pubkey",
pubkey: "notAnAdmin",
expected: false,
},
{
name: "Empty pubkey",
pubkey: "",
expected: false,
},
{
name: "Empty SuperAdmins list",
pubkey: "admin1",
expected: false,
},
{
name: "Pubkey is a substring of a super admin pubkey",
pubkey: "admin",
expected: false,
},
{
name: "Pubkey is a super admin pubkey with additional characters",
pubkey: "admin1extra",
expected: false,
},
{
name: "Null or nil pubkey",
pubkey: nil,
expected: false,
},
{
name: "Non-string pubkey",
pubkey: 12345,
expected: false,
},
{
name: "Large list of super admin pubkeys",
pubkey: "admin1",
expected: true,
},
{
name: "Large pubkey",
pubkey: "averylongpubkeythatisnotinlist",
expected: false,
},
{
name: "Special characters in pubkey",
pubkey: "!@#$%^&*()",
expected: false,
},
{
name: "Case sensitivity",
pubkey: "ADMIN1",
expected: false,
},
{
name: "Duplicate entries in SuperAdmins",
pubkey: "admin1",
expected: true,
},
{
name: "Whitespace in pubkey",
pubkey: " admin1 ",
expected: false,
},
{
name: "Mixed data types in SuperAdmins",
pubkey: "admin1",
expected: true,
},
}

// Temporarily set SuperAdmins to an empty list for the specific test case
originalSuperAdmins := testConfig.SuperAdmins
defer func() { testConfig.SuperAdmins = originalSuperAdmins }()

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if tt.name == "Empty SuperAdmins list" {
config.SuperAdmins = []string{}
} else {
config.SuperAdmins = originalSuperAdmins
}

var result bool
switch v := tt.pubkey.(type) {
case string:
result = AdminCheck(v)
default:
result = false
}

assert.Equal(t, tt.expected, result)
})
}
}

0 comments on commit 4da5e61

Please sign in to comment.