github.com/hellofresh/janus@v0.0.0-20230925145208-ce8de8183c67/pkg/api/file_repository_test.go (about)

     1  package api
     2  
     3  import (
     4  	"os"
     5  	"path/filepath"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  	"github.com/stretchr/testify/require"
    10  
    11  	"github.com/hellofresh/janus/pkg/proxy"
    12  )
    13  
    14  func TestNewFileSystemRepository(t *testing.T) {
    15  	fsRepo := newRepo(t)
    16  
    17  	allDefinitions, err := fsRepo.FindAll()
    18  	assert.NoError(t, err)
    19  	assert.Equal(t, 3, len(allDefinitions))
    20  
    21  	defToAdd := &Definition{
    22  		Name: "foo-bar",
    23  		Proxy: &proxy.Definition{
    24  			ListenPath: "/foo/bar/*",
    25  			Upstreams: &proxy.Upstreams{
    26  				Balancing: "roundrobin",
    27  				Targets: []*proxy.Target{
    28  					{Target: "http://example.com/foo/bar/"},
    29  				},
    30  			},
    31  		},
    32  	}
    33  	err = fsRepo.add(defToAdd)
    34  	require.NoError(t, err)
    35  
    36  	def, err := fsRepo.findByName(defToAdd.Name)
    37  	require.NoError(t, err)
    38  	assert.Equal(t, defToAdd.Name, def.Name)
    39  	assert.Equal(t, defToAdd.Proxy.ListenPath, def.Proxy.ListenPath)
    40  }
    41  
    42  func TestFileSystemRepository_Add(t *testing.T) {
    43  	fsRepo := newRepo(t)
    44  
    45  	invalidName := &Definition{Name: ""}
    46  	err := fsRepo.add(invalidName)
    47  	require.Error(t, err)
    48  }
    49  
    50  func newRepo(t *testing.T) *FileSystemRepository {
    51  	wd, err := os.Getwd()
    52  	assert.NoError(t, err)
    53  
    54  	// ./../../assets/apis
    55  	exampleAPIsPath := filepath.Join(wd, "..", "..", "assets", "apis")
    56  	info, err := os.Stat(exampleAPIsPath)
    57  	require.NoError(t, err)
    58  	require.True(t, info.IsDir())
    59  
    60  	fsRepo, err := NewFileSystemRepository(exampleAPIsPath)
    61  	require.NoError(t, err)
    62  
    63  	return fsRepo
    64  }