You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.4 KiB
89 lines
2.4 KiB
package shell
|
|
|
|
import (
|
|
"bytes"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestRaftLeaderTransfer_Name(t *testing.T) {
|
|
cmd := &commandRaftLeaderTransfer{}
|
|
expected := "cluster.raft.transferLeader"
|
|
if cmd.Name() != expected {
|
|
t.Errorf("expected name %q, got %q", expected, cmd.Name())
|
|
}
|
|
}
|
|
|
|
func TestRaftLeaderTransfer_Help(t *testing.T) {
|
|
cmd := &commandRaftLeaderTransfer{}
|
|
help := cmd.Help()
|
|
|
|
// Verify help text contains key information
|
|
expectedPhrases := []string{
|
|
"transfer raft leadership",
|
|
"cluster.raft.transferLeader",
|
|
"-id",
|
|
"-address",
|
|
"cluster.raft.ps",
|
|
"-raftHashicorp",
|
|
}
|
|
|
|
for _, phrase := range expectedPhrases {
|
|
if !strings.Contains(help, phrase) {
|
|
t.Errorf("help text should contain %q", phrase)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestRaftLeaderTransfer_HasTag(t *testing.T) {
|
|
cmd := &commandRaftLeaderTransfer{}
|
|
// The command should not have any special tags
|
|
if cmd.HasTag(ResourceHeavy) {
|
|
t.Error("expected HasTag to return false for ResourceHeavy")
|
|
}
|
|
}
|
|
|
|
func TestRaftLeaderTransfer_ValidateTargetIdWithoutAddress(t *testing.T) {
|
|
cmd := &commandRaftLeaderTransfer{}
|
|
var buf bytes.Buffer
|
|
|
|
// Create a mock command environment - this will fail because no master client
|
|
// but we can verify argument parsing
|
|
err := cmd.Do([]string{"-id", "test-server"}, nil, &buf)
|
|
|
|
// Should fail because -address is required when -id is specified
|
|
if err == nil {
|
|
t.Error("expected error when -id is specified without -address")
|
|
}
|
|
if err != nil && !strings.Contains(err.Error(), "-address is required") {
|
|
t.Errorf("expected error about missing -address, got: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestRaftLeaderTransfer_ValidateTargetAddressWithoutId(t *testing.T) {
|
|
cmd := &commandRaftLeaderTransfer{}
|
|
var buf bytes.Buffer
|
|
|
|
// Verify argument parsing - address without id should fail
|
|
err := cmd.Do([]string{"-address", "localhost:19333"}, nil, &buf)
|
|
|
|
// Should fail because -id is required when -address is specified
|
|
if err == nil {
|
|
t.Error("expected error when -address is specified without -id")
|
|
}
|
|
if err != nil && !strings.Contains(err.Error(), "-id is required") {
|
|
t.Errorf("expected error about missing -id, got: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestRaftLeaderTransfer_UnknownFlag(t *testing.T) {
|
|
cmd := &commandRaftLeaderTransfer{}
|
|
var buf bytes.Buffer
|
|
|
|
// Unknown flag should return an error
|
|
err := cmd.Do([]string{"-unknown-flag"}, nil, &buf)
|
|
if err == nil {
|
|
t.Error("expected error for unknown flag")
|
|
}
|
|
}
|
|
|