Files

62 lines
1.8 KiB
Go

package executor
import (
"bytes"
"context"
"runtime"
"strings"
"testing"
)
func TestUserGrantMissingArgs(t *testing.T) {
req := BuiltinRequest{
Args: []string{},
Stdout: &bytes.Buffer{},
Stderr: &bytes.Buffer{},
}
err := runUserGrant(context.Background(), req)
if err == nil || !strings.Contains(err.Error(), "缺少用户名") {
t.Errorf("expected missing username error, got %v", err)
}
}
func TestUserRevokeMissingArgs(t *testing.T) {
req := BuiltinRequest{
Args: []string{},
Stdout: &bytes.Buffer{},
Stderr: &bytes.Buffer{},
}
err := runUserRevoke(context.Background(), req)
if err == nil || !strings.Contains(err.Error(), "缺少用户名") {
t.Errorf("expected missing username error, got %v", err)
}
}
func TestUserGrantUnsupportedOS(t *testing.T) {
// This test only runs on unsupported platforms (none currently)
// We test the error path by mocking runtime.GOOS which is not possible
// in Go, so we just verify the function doesn't panic with valid input
if runtime.GOOS != "linux" && runtime.GOOS != "darwin" && runtime.GOOS != "windows" {
req := BuiltinRequest{
Args: []string{"testuser"},
Stdout: &bytes.Buffer{},
Stderr: &bytes.Buffer{},
}
err := runUserGrant(context.Background(), req)
if err == nil || !strings.Contains(err.Error(), "不支持的操作系统") {
t.Errorf("expected unsupported OS error, got %v", err)
}
}
}
func TestGroupExists(t *testing.T) {
// Test with a group that should exist on most Unix systems
if runtime.GOOS == "linux" || runtime.GOOS == "darwin" {
// 'staff' or 'wheel' should exist on macOS, 'root' or 'wheel' on Linux
exists := groupExists("root") || groupExists("wheel") || groupExists("staff")
if !exists {
t.Log("warning: none of root/wheel/staff groups found, this is unusual but not fatal")
}
}
}