jx/internal/resource/user_test.go
Matthew Rich 43a2274b7e
Some checks failed
Lint / golangci-lint (push) Failing after 9m50s
Declarative Tests / test (push) Failing after 10s
update container/iptables resources
2024-05-05 17:48:54 -07:00

80 lines
1.3 KiB
Go

// Copyright 2024 Matthew Rich <matthewrich.conf@gmail.com>. 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)
}