// Copyright 2024 Matthew Rich . All rights reserved. package resource import ( "context" _ "encoding/json" "fmt" "github.com/stretchr/testify/assert" _ "io" _ "net/http" _ "net/http/httptest" _ "net/url" _ "os" _ "strings" "testing" ) func TestNewUserResource(t *testing.T) { u := NewUser() assert.NotEqual(t, nil, u) } func TestReadUser(t *testing.T) { ctx := context.Background() decl := ` name: "nobody" ` u := NewUser() e := u.LoadDecl(decl) assert.Nil(t, e) assert.Equal(t, "nobody", u.Name) fmt.Printf("%#v\n", u) _, readErr := u.Read(ctx) assert.Nil(t, readErr) fmt.Printf("%#v\n", u) assert.Equal(t, "65534", u.UID) } func TestCreateUser(t *testing.T) { decl := ` name: "testuser" uid: 12001 gid: 12001 home: "/home/testuser" state: present ` u := NewUser() e := u.LoadDecl(decl) assert.Equal(t, nil, e) assert.Equal(t, "testuser", u.Name) u.CreateCommand.Executor = func(value any) ([]byte, error) { return []byte(``), nil } u.ReadCommand.Extractor = func(out []byte, target any) error { return nil } u.DeleteCommand.Executor = func(value any) ([]byte, error) { return nil, nil } applyErr := u.Apply() assert.Nil(t, applyErr) assert.Equal(t, "12001", u.UID) u.State = "absent" applyDeleteErr := u.Apply() assert.Equal(t, nil, applyDeleteErr) }