diff options
Diffstat (limited to 'internal/configuration/template_test.go')
| -rw-r--r-- | internal/configuration/template_test.go | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/internal/configuration/template_test.go b/internal/configuration/template_test.go new file mode 100644 index 000000000..113d272aa --- /dev/null +++ b/internal/configuration/template_test.go @@ -0,0 +1,59 @@ +package configuration + +import ( + "fmt" + "io/ioutil" + "os" + "path/filepath" + "runtime" + "testing" + + "github.com/stretchr/testify/assert" + + "github.com/authelia/authelia/internal/utils" +) + +func TestShouldGenerateConfiguration(t *testing.T) { + dir, err := ioutil.TempDir("", "authelia-config") + assert.NoError(t, err) + + cfg := filepath.Join(dir, "config.yml") + + created, err := EnsureConfigurationExists(cfg) + assert.NoError(t, err) + assert.True(t, created) + + _, err = os.Stat(cfg) + assert.NoError(t, err) +} + +func TestShouldNotGenerateConfigurationOnFSAccessDenied(t *testing.T) { + if runtime.GOOS == constWindows { + t.Skip("skipping test due to being on windows") + } + + dir, err := ioutil.TempDir("", "authelia-config") + assert.NoError(t, err) + + assert.NoError(t, os.Mkdir(filepath.Join(dir, "zero"), 0000)) + + cfg := filepath.Join(dir, "zero", "config.yml") + + created, err := EnsureConfigurationExists(cfg) + assert.EqualError(t, err, fmt.Sprintf("error occurred generating configuration: stat %s: permission denied", cfg)) + assert.False(t, created) +} + +func TestShouldNotGenerateConfiguration(t *testing.T) { + dir, err := ioutil.TempDir("", "authelia-config") + assert.NoError(t, err) + + cfg := filepath.Join(dir, "..", "not-a-dir", "config.yml") + + created, err := EnsureConfigurationExists(cfg) + + expectedErr := fmt.Sprintf(utils.GetExpectedErrTxt("pathnotfound"), cfg) + + assert.EqualError(t, err, fmt.Sprintf(errFmtGenerateConfiguration, expectedErr)) + assert.False(t, created) +} |
