// Copyright 2024 Matthew Rich . All rights reserved. package transport import ( "github.com/stretchr/testify/assert" "net/url" "testing" "fmt" "os" "log" ) var TempDir string var testFileResourceDoc string = ` resources: - type: file transition: read attributes: path: /tmp/foobar ` func TestMain(m *testing.M) { var err error TempDir, err = os.MkdirTemp("", "testtransportfile") if err != nil || TempDir == "" { log.Fatal(err) } rc := m.Run() os.RemoveAll(TempDir) os.Exit(rc) } func TestNewTransportReader(t *testing.T) { path := fmt.Sprintf("%s/foo", TempDir) u, e := url.Parse(fmt.Sprintf("file://%s", path)) assert.Nil(t, e) writeErr := os.WriteFile(path, []byte("test"), 0644) assert.Nil(t, writeErr) reader, err := NewReader(u) assert.Nil(t, err) assert.NotNil(t, reader) } func TestTransportReaderContentType(t *testing.T) { path := fmt.Sprintf("%s/foo.jx.yaml", TempDir) u, e := url.Parse(fmt.Sprintf("file://%s", path)) assert.Nil(t, e) assert.False(t, Exists(u)) writeErr := os.WriteFile(path, []byte(testFileResourceDoc), 0644) assert.Nil(t, writeErr) reader, err := NewReader(u) assert.Nil(t, err) assert.True(t, reader.Exists()) assert.NotNil(t, reader) assert.Equal(t, reader.ContentType(), "yaml") } func TestTransportReaderDir(t *testing.T) { u, e := url.Parse(fmt.Sprintf("file://%s", TempDir)) assert.Nil(t, e) reader, err := NewReader(u) assert.ErrorContains(t, err, "is a directory") assert.True(t, reader.Exists()) assert.NotNil(t, reader) } func TestTransportWriter(t *testing.T) { path := fmt.Sprintf("%s/writefoo", TempDir) u, e := url.Parse(fmt.Sprintf("file://%s", path)) assert.Nil(t, e) assert.False(t, Exists(u)) writer, err := NewWriter(u) assert.Nil(t, err) defer writer.Close() assert.NotNil(t, writer) assert.True(t, writer.Exists()) _, writeErr := writer.Write([]byte("testdata")) assert.Nil(t, writeErr) assert.FileExists(t, path) }