72 lines
1.5 KiB
Go
72 lines
1.5 KiB
Go
package management
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/cloudflare/cloudflared/cfapi"
|
|
)
|
|
|
|
func TestParseResource_ValidResources(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
input string
|
|
expected cfapi.ManagementResource
|
|
}{
|
|
{"logs", cfapi.Logs},
|
|
{"admin", cfapi.Admin},
|
|
{"host_details", cfapi.HostDetails},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.input, func(t *testing.T) {
|
|
t.Parallel()
|
|
result, err := parseResource(tt.input)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, tt.expected, result)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestParseResource_InvalidResource(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
invalid := []string{"invalid", "LOGS", "Admin", "", "metrics", "host-details"}
|
|
|
|
for _, input := range invalid {
|
|
t.Run(input, func(t *testing.T) {
|
|
t.Parallel()
|
|
_, err := parseResource(input)
|
|
require.Error(t, err)
|
|
assert.Contains(t, err.Error(), "must be one of")
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestCommandStructure(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
cmd := Command()
|
|
|
|
assert.Equal(t, "management", cmd.Name)
|
|
assert.True(t, cmd.Hidden)
|
|
assert.Len(t, cmd.Subcommands, 1)
|
|
|
|
tokenCmd := cmd.Subcommands[0]
|
|
assert.Equal(t, "token", tokenCmd.Name)
|
|
assert.True(t, tokenCmd.Hidden)
|
|
|
|
// Verify required flags exist
|
|
var hasResourceFlag bool
|
|
for _, flag := range tokenCmd.Flags {
|
|
if flag.Names()[0] == "resource" {
|
|
hasResourceFlag = true
|
|
break
|
|
}
|
|
}
|
|
assert.True(t, hasResourceFlag, "token command should have --resource flag")
|
|
}
|