Skip to content

Commit

Permalink
Merge pull request #4 from neo4j/afero
Browse files Browse the repository at this point in the history
Use afero for filesystem
  • Loading branch information
darrellwarde authored Jul 31, 2024
2 parents c30a35d + 3ab0403 commit 3638f6a
Show file tree
Hide file tree
Showing 20 changed files with 181 additions and 91 deletions.
3 changes: 2 additions & 1 deletion cmd/aura/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,15 @@ import (
"github.com/neo4j/cli/pkg/aura"
"github.com/neo4j/cli/pkg/clicfg"
"github.com/neo4j/cli/pkg/clictx"
"github.com/spf13/afero"
)

var Version = "dev"

func main() {
cmd := aura.NewCmd()

cfg, err := clicfg.NewConfig()
cfg, err := clicfg.NewConfig(afero.NewOsFs())
if err != nil {
fmt.Println(err)
os.Exit(1)
Expand Down
3 changes: 2 additions & 1 deletion cmd/neo4j/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,15 @@ import (
"github.com/neo4j/cli/pkg/clicfg"
"github.com/neo4j/cli/pkg/clictx"
"github.com/neo4j/cli/pkg/neo4j"
"github.com/spf13/afero"
)

var Version = "dev"

func main() {
cmd := neo4j.NewCmd()

cfg, err := clicfg.NewConfig()
cfg, err := clicfg.NewConfig(afero.NewOsFs())
if err != nil {
fmt.Println(err)
os.Exit(1)
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ module github.com/neo4j/cli
go 1.22.2

require (
github.com/spf13/afero v1.11.0
github.com/spf13/cobra v1.8.1
github.com/spf13/pflag v1.0.5
github.com/spf13/viper v1.19.0
Expand All @@ -22,7 +23,6 @@ require (
github.com/sagikazarmark/locafero v0.6.0 // indirect
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
github.com/sourcegraph/conc v0.3.0 // indirect
github.com/spf13/afero v1.11.0 // indirect
github.com/spf13/cast v1.6.0 // indirect
github.com/subosito/gotenv v1.6.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
Expand Down
56 changes: 56 additions & 0 deletions internal/testutils/testfs.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package testutils

import (
"io"
"os"
"path/filepath"

"github.com/neo4j/cli/pkg/clicfg"
"github.com/spf13/afero"
)

func GetDefaultTestFs() (afero.Fs, error) {
return GetTestFs("{}")
}

func GetTestFs(config string) (afero.Fs, error) {
fs := afero.NewMemMapFs()

configPath := filepath.Join(clicfg.ConfigPrefix, "neo4j", "cli", "config.json")

if err := fs.MkdirAll(filepath.Dir(configPath), 0755); err != nil {
return nil, err
}

f, err := fs.OpenFile(configPath, os.O_WRONLY|os.O_CREATE, 0600)
if err != nil {
return nil, err
}
defer f.Close()

if _, err = f.Write([]byte(config)); err != nil {
return nil, err
}

return fs, nil
}

func GetTestConfig(fs afero.Fs) (string, error) {
configPath := filepath.Join(clicfg.ConfigPrefix, "neo4j", "cli", "config.json")

file, err := fs.Open(configPath)
if err != nil {
return "", err
}

b, err := io.ReadAll(file)
if err != nil {
return "", err
}

if err := file.Close(); err != nil {
return "", err
}

return string(b), nil
}
12 changes: 9 additions & 3 deletions pkg/aura/cmd/config/get_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ import (
"context"
"fmt"
"io"
"strings"
"testing"

"github.com/neo4j/cli/internal/testutils"
"github.com/neo4j/cli/pkg/aura"
"github.com/neo4j/cli/pkg/clicfg"
"github.com/neo4j/cli/pkg/clictx"
Expand All @@ -22,7 +22,10 @@ func TestGetConfig(t *testing.T) {
cmd.SetOut(b)
cmd.SetArgs([]string{"config", "get", "auth-url"})

cfg, err := clicfg.NewConfigFrom(strings.NewReader(`{"aura":{"auth-url":"test"}}`), nil)
fs, err := testutils.GetTestFs(`{"aura":{"auth-url":"test"}}`)
assert.Nil(err)

cfg, err := clicfg.NewConfig(fs)
assert.Nil(err)

ctx, err := clictx.NewContext(context.Background(), cfg, "test")
Expand All @@ -47,7 +50,10 @@ func TestGetConfigDefault(t *testing.T) {
cmd.SetOut(b)
cmd.SetArgs([]string{"config", "get", "auth-url"})

cfg, err := clicfg.NewConfigFrom(strings.NewReader("{}"), nil)
fs, err := testutils.GetDefaultTestFs()
assert.Nil(err)

cfg, err := clicfg.NewConfig(fs)
assert.Nil(err)

ctx, err := clictx.NewContext(context.Background(), cfg, "test")
Expand Down
7 changes: 5 additions & 2 deletions pkg/aura/cmd/config/list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ import (
"context"
"fmt"
"io"
"strings"
"testing"

"github.com/neo4j/cli/internal/testutils"
"github.com/neo4j/cli/pkg/aura"
"github.com/neo4j/cli/pkg/clicfg"
"github.com/neo4j/cli/pkg/clictx"
Expand All @@ -22,7 +22,10 @@ func TestListConfigDefault(t *testing.T) {
cmd.SetOut(b)
cmd.SetArgs([]string{"config", "list"})

cfg, err := clicfg.NewConfigFrom(strings.NewReader("{}"), nil)
fs, err := testutils.GetDefaultTestFs()
assert.Nil(err)

cfg, err := clicfg.NewConfig(fs)
assert.Nil(err)

ctx, err := clictx.NewContext(context.Background(), cfg, "test")
Expand Down
15 changes: 7 additions & 8 deletions pkg/aura/cmd/config/set_test.go
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
package config_test

import (
"bufio"
"bytes"
"context"
"fmt"
"io"
"strings"
"testing"

"github.com/neo4j/cli/internal/testutils"
"github.com/neo4j/cli/pkg/aura"
"github.com/neo4j/cli/pkg/clicfg"
"github.com/neo4j/cli/pkg/clictx"
Expand All @@ -21,8 +18,10 @@ func TestSetConfig(t *testing.T) {
cmd := aura.NewCmd()
cmd.SetArgs([]string{"config", "set", "auth-url", "test"})

b := bytes.NewBufferString("")
cfg, err := clicfg.NewConfigFrom(strings.NewReader("{}"), bufio.NewWriter(b))
fs, err := testutils.GetDefaultTestFs()
assert.Nil(err)

cfg, err := clicfg.NewConfig(fs)
assert.Nil(err)

ctx, err := clictx.NewContext(context.Background(), cfg, "test")
Expand All @@ -31,8 +30,8 @@ func TestSetConfig(t *testing.T) {
err = cmd.ExecuteContext(ctx)
assert.Nil(err)

out, err := io.ReadAll(b)
out, err := testutils.GetTestConfig(fs)
assert.Nil(err)

assert.Equal(fmt.Sprintf(`{"aura":{"base-url":"%s","auth-url":"test","output":"json","credentials":[]}}`, clicfg.DefaultAuraBaseUrl), string(out))
assert.Equal(fmt.Sprintf(`{"aura":{"base-url":"%s","auth-url":"test","output":"json","credentials":[]}}`, clicfg.DefaultAuraBaseUrl), out)
}
20 changes: 11 additions & 9 deletions pkg/aura/cmd/credential/add_test.go
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
package credential_test

import (
"bufio"
"bytes"
"context"
"fmt"
"io"
"strings"
"testing"

"github.com/neo4j/cli/internal/testutils"
"github.com/neo4j/cli/pkg/aura"
"github.com/neo4j/cli/pkg/clicfg"
"github.com/neo4j/cli/pkg/clictx"
Expand All @@ -21,8 +18,10 @@ func TestAddCredential(t *testing.T) {
cmd := aura.NewCmd()
cmd.SetArgs([]string{"credential", "add", "--name", "test", "--client-id", "testclientid", "--client-secret", "testclientsecret"})

b := bytes.NewBufferString("")
cfg, err := clicfg.NewConfigFrom(strings.NewReader("{}"), bufio.NewWriter(b))
fs, err := testutils.GetDefaultTestFs()
assert.Nil(err)

cfg, err := clicfg.NewConfig(fs)
assert.Nil(err)

ctx, err := clictx.NewContext(context.Background(), cfg, "test")
Expand All @@ -31,10 +30,10 @@ func TestAddCredential(t *testing.T) {
err = cmd.ExecuteContext(ctx)
assert.Nil(err)

out, err := io.ReadAll(b)
out, err := testutils.GetTestConfig(fs)
assert.Nil(err)

assert.Equal(fmt.Sprintf(`{"aura":{"base-url":"%s","auth-url":"%s","output":"json","credentials":[{"name":"test","client-id":"testclientid","client-secret":"testclientsecret","access-token":"","token-expiry":""}]}}`, clicfg.DefaultAuraBaseUrl, clicfg.DefaultAuraAuthUrl), string(out))
assert.Equal(fmt.Sprintf(`{"aura":{"base-url":"%s","auth-url":"%s","output":"json","credentials":[{"name":"test","client-id":"testclientid","client-secret":"testclientsecret","access-token":"","token-expiry":""}]}}`, clicfg.DefaultAuraBaseUrl, clicfg.DefaultAuraAuthUrl), out)
}

func TestAddCredentialIfAlreadyExists(t *testing.T) {
Expand All @@ -43,7 +42,10 @@ func TestAddCredentialIfAlreadyExists(t *testing.T) {
cmd := aura.NewCmd()
cmd.SetArgs([]string{"credential", "add", "--name", "test", "--client-id", "testclientid", "--client-secret", "testclientsecret"})

cfg, err := clicfg.NewConfigFrom(strings.NewReader(`{"aura":{"credentials":[{"name":"test","client-id":"testclientid","client-secret":"testclientsecret"}]}}`), nil)
fs, err := testutils.GetTestFs(`{"aura":{"credentials":[{"name":"test","client-id":"testclientid","client-secret":"testclientsecret"}]}}`)
assert.Nil(err)

cfg, err := clicfg.NewConfig(fs)
assert.Nil(err)

ctx, err := clictx.NewContext(context.Background(), cfg, "test")
Expand Down
13 changes: 6 additions & 7 deletions pkg/aura/cmd/credential/remove_test.go
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
package credential_test

import (
"bufio"
"bytes"
"context"
"fmt"
"io"
"strings"
"testing"

"github.com/neo4j/cli/internal/testutils"
"github.com/neo4j/cli/pkg/aura"
"github.com/neo4j/cli/pkg/clicfg"
"github.com/neo4j/cli/pkg/clictx"
Expand All @@ -21,8 +18,10 @@ func TestRemoveCredential(t *testing.T) {
cmd := aura.NewCmd()
cmd.SetArgs([]string{"credential", "remove", "test"})

b := bytes.NewBufferString("")
cfg, err := clicfg.NewConfigFrom(strings.NewReader(`{"aura":{"credentials":[{"name":"test","client-id":"testclientid","client-secret":"testclientsecret"}]}}`), bufio.NewWriter(b))
fs, err := testutils.GetTestFs(`{"aura":{"credentials":[{"name":"test","client-id":"testclientid","client-secret":"testclientsecret"}]}}`)
assert.Nil(err)

cfg, err := clicfg.NewConfig(fs)
assert.Nil(err)

ctx, err := clictx.NewContext(context.Background(), cfg, "test")
Expand All @@ -31,7 +30,7 @@ func TestRemoveCredential(t *testing.T) {
err = cmd.ExecuteContext(ctx)
assert.Nil(err)

out, err := io.ReadAll(b)
out, err := testutils.GetTestConfig(fs)
assert.Nil(err)

assert.Equal(fmt.Sprintf(`{"aura":{"base-url":"%s","auth-url":"%s","output":"json","credentials":[]}}`, clicfg.DefaultAuraBaseUrl, clicfg.DefaultAuraAuthUrl), string(out))
Expand Down
21 changes: 11 additions & 10 deletions pkg/aura/cmd/credential/use_test.go
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
package credential_test

import (
"bufio"
"bytes"
"context"
"fmt"
"io"
"strings"
"testing"

"github.com/neo4j/cli/internal/testutils"
"github.com/neo4j/cli/pkg/aura"
"github.com/neo4j/cli/pkg/clicfg"
"github.com/neo4j/cli/pkg/clictx"
Expand All @@ -21,8 +18,10 @@ func TestUseCredential(t *testing.T) {
cmd := aura.NewCmd()
cmd.SetArgs([]string{"credential", "use", "test"})

b := bytes.NewBufferString("")
cfg, err := clicfg.NewConfigFrom(strings.NewReader(`{"aura":{"credentials":[{"name":"test","client-id":"testclientid","client-secret":"testclientsecret"}]}}`), bufio.NewWriter(b))
fs, err := testutils.GetTestFs(`{"aura":{"credentials":[{"name":"test","client-id":"testclientid","client-secret":"testclientsecret"}]}}`)
assert.Nil(err)

cfg, err := clicfg.NewConfig(fs)
assert.Nil(err)

ctx, err := clictx.NewContext(context.Background(), cfg, "test")
Expand All @@ -31,20 +30,22 @@ func TestUseCredential(t *testing.T) {
err = cmd.ExecuteContext(ctx)
assert.Nil(err)

out, err := io.ReadAll(b)
out, err := testutils.GetTestConfig(fs)
assert.Nil(err)

assert.Equal(fmt.Sprintf(`{"aura":{"base-url":"%s","auth-url":"%s","output":"json","default-credential":"test","credentials":[{"name":"test","client-id":"testclientid","client-secret":"testclientsecret","access-token":"","token-expiry":""}]}}`, clicfg.DefaultAuraBaseUrl, clicfg.DefaultAuraAuthUrl), string(out))
assert.Equal(fmt.Sprintf(`{"aura":{"base-url":"%s","auth-url":"%s","output":"json","default-credential":"test","credentials":[{"name":"test","client-id":"testclientid","client-secret":"testclientsecret","access-token":"","token-expiry":""}]}}`, clicfg.DefaultAuraBaseUrl, clicfg.DefaultAuraAuthUrl), out)
}

// TODO: currently fails when running with all tests - figure out what is going here
func TestUseCredentialIfDoesNotExist(t *testing.T) {
assert := assert.New(t)

cmd := aura.NewCmd()
cmd.SetArgs([]string{"credential", "use", "test"})

cfg, err := clicfg.NewConfigFrom(strings.NewReader(`{}`), nil)
fs, err := testutils.GetDefaultTestFs()
assert.Nil(err)

cfg, err := clicfg.NewConfig(fs)
assert.Nil(err)

ctx, err := clictx.NewContext(context.Background(), cfg, "test")
Expand Down
Loading

0 comments on commit 3638f6a

Please sign in to comment.