summaryrefslogtreecommitdiff
path: root/internal/configuration/template_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/configuration/template_test.go')
-rw-r--r--internal/configuration/template_test.go59
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)
+}