// Copyright 2024 Matthew Rich . All rights reserved package resource import ( "context" _ "encoding/json" _ "fmt" "github.com/stretchr/testify/assert" _ "gopkg.in/yaml.v3" _ "io" "log/slog" _ "net/http" _ "net/http/httptest" _ "net/url" _ "os" _ "strings" "testing" ) func TestNewPackageResource(t *testing.T) { p := NewPackage() assert.NotNil(t, p) } func TestPackageApplyResourceTransformation(t *testing.T) { p := NewPackage() assert.NotNil(t, p) //e := f.Apply() //assert.Equal(t, nil, e) } func TestReadPackage(t *testing.T) { decl := ` name: vim version: latest type: apk ` p := NewPackage() assert.NotNil(t, p) m := &MockCommand{ Executor: func(value any) ([]byte, error) { return nil, nil }, Extractor: func(output []byte, target any) error { p.Name = "vim" p.Version = "1.1.1" p.State = "present" return nil }, } loadErr := p.LoadDecl(decl) assert.Nil(t, loadErr) assert.Equal(t, "latest", p.Version) p.ReadCommand = (*Command)(m) yaml, readErr := p.Read(context.Background()) assert.Nil(t, readErr) assert.Greater(t, len(yaml), 0) slog.Info("read()", "yaml", yaml) assert.Equal(t, "1.1.1", p.Version) slog.Info("resource: ", "package", p) assert.Nil(t, p.Validate()) } func TestReadAptPackage(t *testing.T) { decl := ` name: vim required: ">1.1.1" type: apt ` p := NewPackage() assert.NotNil(t, p) loadErr := p.LoadDecl(decl) assert.Nil(t, loadErr) assert.Equal(t, ">1.1.1", p.Required) p.ReadCommand = NewAptReadCommand() p.ReadCommand.Executor = func(value any) ([]byte, error) { return []byte(` Package: vim Version: 1.2.2 `), nil } yaml, readErr := p.Read(context.Background()) assert.Nil(t, readErr) assert.Greater(t, len(yaml), 0) slog.Info("read()", "yaml", yaml) assert.Equal(t, "1.2.2", p.Version) assert.Nil(t, p.Validate()) } func TestReadPackageError(t *testing.T) { } func TestCreatePackage(t *testing.T) { } func TestPackageSetURI(t *testing.T) { p := NewPackage() assert.NotNil(t, p) e := p.SetURI("package://" + "12345_key?type=apk") assert.Nil(t, e) assert.Equal(t, "package", p.Type()) assert.Equal(t, "12345_key", p.Name) }