aboutsummaryrefslogtreecommitdiff
path: root/config/config_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'config/config_test.go')
-rw-r--r--config/config_test.go128
1 files changed, 128 insertions, 0 deletions
diff --git a/config/config_test.go b/config/config_test.go
index 780ac6b..525a09d 100644
--- a/config/config_test.go
+++ b/config/config_test.go
@@ -15,3 +15,131 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
package config_test
+
+import (
+ "io/ioutil"
+ "os"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ "maunium.net/go/gomuks/config"
+)
+
+func TestNewConfig_Defaults(t *testing.T) {
+ cfg := config.NewConfig("/tmp/gomuks-test-0")
+ assert.Equal(t, "/tmp/gomuks-test-0", cfg.Dir)
+ assert.Equal(t, "/tmp/gomuks-test-0/history", cfg.HistoryDir)
+ assert.Equal(t, "/tmp/gomuks-test-0/media", cfg.MediaDir)
+}
+
+func TestConfig_Load_NonexistentDoesntFail(t *testing.T) {
+ cfg := config.NewConfig("/tmp/gomuks-test-1")
+
+ defer os.RemoveAll("/tmp/gomuks-test-1")
+
+ cfg.Load()
+
+ stat, err := os.Stat(cfg.MediaDir)
+ assert.Nil(t, err)
+ assert.True(t, stat.IsDir())
+
+ stat, err = os.Stat(cfg.HistoryDir)
+ assert.Nil(t, err)
+ assert.True(t, stat.IsDir())
+}
+
+func TestConfig_Load_DirectoryFails(t *testing.T) {
+ os.MkdirAll("/tmp/gomuks-test-2/config.yaml", 0700)
+ cfg := config.NewConfig("/tmp/gomuks-test-2")
+
+ defer os.RemoveAll("/tmp/gomuks-test-2")
+ defer func() {
+ if err := recover(); err == nil {
+ t.Fatalf("Load() didn't panic")
+ }
+ }()
+
+ cfg.Load()
+}
+
+func TestConfig_Load_ExistingFileIsLoaded(t *testing.T) {
+ os.MkdirAll("/tmp/gomuks-test-3", 0700)
+ ioutil.WriteFile("/tmp/gomuks-test-3/config.yaml", []byte(`{
+ "mxid": "foo",
+ "homeserver": "bar",
+ "history_dir": "/tmp/gomuks-test-3/foo",
+ "media_dir": "/tmp/gomuks-test-3/bar"
+ }`), 0700)
+ cfg := config.NewConfig("/tmp/gomuks-test-3")
+
+ defer os.RemoveAll("/tmp/gomuks-test-3")
+
+ cfg.Load()
+
+ assert.Equal(t, "foo", cfg.UserID)
+ assert.Equal(t, "bar", cfg.HS)
+ assert.Equal(t, "/tmp/gomuks-test-3/foo", cfg.HistoryDir)
+ assert.Equal(t, "/tmp/gomuks-test-3/bar", cfg.MediaDir)
+
+ stat, err := os.Stat(cfg.MediaDir)
+ assert.Nil(t, err)
+ assert.True(t, stat.IsDir())
+
+ stat, err = os.Stat(cfg.HistoryDir)
+ assert.Nil(t, err)
+ assert.True(t, stat.IsDir())
+}
+
+func TestConfig_Load_InvalidExistingFilePanics(t *testing.T) {
+ os.MkdirAll("/tmp/gomuks-test-4", 0700)
+ ioutil.WriteFile("/tmp/gomuks-test-4/config.yaml", []byte(`this is not JSON.`), 0700)
+ cfg := config.NewConfig("/tmp/gomuks-test-4")
+
+ defer os.RemoveAll("/tmp/gomuks-test-4")
+ defer func() {
+ if err := recover(); err == nil {
+ t.Fatalf("Load() didn't panic")
+ }
+ }()
+
+ cfg.Load()
+}
+
+func TestConfig_Clear(t *testing.T) {
+ cfg := config.NewConfig("/tmp/gomuks-test-5")
+
+ defer os.RemoveAll("/tmp/gomuks-test-5")
+
+ cfg.Load()
+
+ stat, err := os.Stat(cfg.MediaDir)
+ assert.Nil(t, err)
+ assert.True(t, stat.IsDir())
+
+ stat, err = os.Stat(cfg.HistoryDir)
+ assert.Nil(t, err)
+ assert.True(t, stat.IsDir())
+
+ cfg.Clear()
+
+ stat, err = os.Stat(cfg.MediaDir)
+ assert.True(t, os.IsNotExist(err))
+ assert.Nil(t, stat)
+
+ stat, err = os.Stat(cfg.HistoryDir)
+ assert.True(t, os.IsNotExist(err))
+ assert.Nil(t, stat)
+}
+
+func TestConfig_Save(t *testing.T) {
+ cfg := config.NewConfig("/tmp/gomuks-test-6")
+
+ defer os.RemoveAll("/tmp/gomuks-test-6")
+
+ cfg.Load()
+ cfg.Save()
+
+ dat, err := ioutil.ReadFile("/tmp/gomuks-test-6/config.yaml")
+ assert.Nil(t, err)
+ assert.Contains(t, string(dat), "/tmp/gomuks-test-6")
+}