cmd/gondole-cli/config_test.go
author Ollivier Robert <roberto@keltia.net>
Wed, 12 Apr 2017 09:38:20 +0200
changeset 69 3474d0f36259
parent 67 config_test.go@1ff7afce37fe
child 73 d601c957d789
permissions -rw-r--r--
Move config stuff into the CLI app.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8
6d89be3dd966 Placeholders.
Ollivier Robert <roberto@keltia.net>
parents:
diff changeset
     1
package gondole
23
512f1bfaed0c Start a config module.
Ollivier Robert <roberto@keltia.net>
parents: 8
diff changeset
     2
45
c1fd96210492 Add test for loadGlobal().
Ollivier Robert <roberto@keltia.net>
parents: 23
diff changeset
     3
import (
57
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
     4
	"github.com/stretchr/testify/assert"
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
     5
	"os"
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
     6
	"path/filepath"
45
c1fd96210492 Add test for loadGlobal().
Ollivier Robert <roberto@keltia.net>
parents: 23
diff changeset
     7
	"testing"
c1fd96210492 Add test for loadGlobal().
Ollivier Robert <roberto@keltia.net>
parents: 23
diff changeset
     8
)
c1fd96210492 Add test for loadGlobal().
Ollivier Robert <roberto@keltia.net>
parents: 23
diff changeset
     9
c1fd96210492 Add test for loadGlobal().
Ollivier Robert <roberto@keltia.net>
parents: 23
diff changeset
    10
func TestLoadGlobal(t *testing.T) {
c1fd96210492 Add test for loadGlobal().
Ollivier Robert <roberto@keltia.net>
parents: 23
diff changeset
    11
	baseDir = "."
c1fd96210492 Add test for loadGlobal().
Ollivier Robert <roberto@keltia.net>
parents: 23
diff changeset
    12
c1fd96210492 Add test for loadGlobal().
Ollivier Robert <roberto@keltia.net>
parents: 23
diff changeset
    13
	_, err := loadGlobal(filepath.Join("test", "non.toml"))
c1fd96210492 Add test for loadGlobal().
Ollivier Robert <roberto@keltia.net>
parents: 23
diff changeset
    14
	assert.Error(t, err, "does not exist")
c1fd96210492 Add test for loadGlobal().
Ollivier Robert <roberto@keltia.net>
parents: 23
diff changeset
    15
60
ca2a067d21af More tests.
Ollivier Robert <roberto@keltia.net>
parents: 58
diff changeset
    16
	_, err = loadGlobal(filepath.Join("test", "garbage.token"))
ca2a067d21af More tests.
Ollivier Robert <roberto@keltia.net>
parents: 58
diff changeset
    17
	assert.Error(t, err, "just garbage")
ca2a067d21af More tests.
Ollivier Robert <roberto@keltia.net>
parents: 58
diff changeset
    18
47
4ea0a1d2cf9a Grrr, workaround the fact that one can not commit "000" files.
Ollivier Robert <roberto@keltia.net>
parents: 45
diff changeset
    19
	// git does now allow you to checkin 000 files :(
63
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    20
	err = os.Chmod(filepath.Join("test", "perms.toml"), 0000)
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    21
	assert.NoError(t, err, "should be fine")
45
c1fd96210492 Add test for loadGlobal().
Ollivier Robert <roberto@keltia.net>
parents: 23
diff changeset
    22
	_, err = loadGlobal(filepath.Join("test", "perms.toml"))
c1fd96210492 Add test for loadGlobal().
Ollivier Robert <roberto@keltia.net>
parents: 23
diff changeset
    23
	assert.Error(t, err, "unreadable")
63
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    24
	err = os.Chmod(filepath.Join("test", "perms.toml"), 0600)
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    25
	assert.NoError(t, err, "should be fine")
45
c1fd96210492 Add test for loadGlobal().
Ollivier Robert <roberto@keltia.net>
parents: 23
diff changeset
    26
c1fd96210492 Add test for loadGlobal().
Ollivier Robert <roberto@keltia.net>
parents: 23
diff changeset
    27
	c, err := loadGlobal(filepath.Join("test", "config.toml"))
c1fd96210492 Add test for loadGlobal().
Ollivier Robert <roberto@keltia.net>
parents: 23
diff changeset
    28
	assert.NoError(t, err, "should read it fine")
63
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    29
	assert.EqualValues(t, "foo", c.Default, "equal")
45
c1fd96210492 Add test for loadGlobal().
Ollivier Robert <roberto@keltia.net>
parents: 23
diff changeset
    30
}
c1fd96210492 Add test for loadGlobal().
Ollivier Robert <roberto@keltia.net>
parents: 23
diff changeset
    31
57
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
    32
func TestLoadInstance(t *testing.T) {
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
    33
	baseDir = "."
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
    34
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
    35
	_, err := loadInstance("nonexistent")
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
    36
	assert.Error(t, err, "does not exist")
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
    37
63
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    38
	file := filepath.Join("test", "garbage")
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    39
	_, err = loadInstance(file)
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    40
	assert.Error(t, err, "just garbage")
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    41
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    42
	file = filepath.Join("test", "foo.token")
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    43
	err = os.Chmod(file, 0000)
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    44
	assert.NoError(t, err, "should be fine")
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    45
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    46
	file = filepath.Join("test", "foo")
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    47
	_, err = loadInstance(file)
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    48
	assert.Error(t, err, "unreadable")
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    49
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    50
	file = filepath.Join("test", "foo.token")
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    51
	err = os.Chmod(file, 0644)
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    52
	assert.NoError(t, err, "should be fine")
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    53
57
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
    54
	real := &Server{
66
965586c1e3ed Change all ID into string, I guess this was to avoir overflow.
Ollivier Robert <roberto@keltia.net>
parents: 63
diff changeset
    55
		ID:          "666",
57
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
    56
		Name:        "foo",
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
    57
		BearerToken: "d3b07384d113edec49eaa6238ad5ff00",
67
1ff7afce37fe Add a baseURL parameter to NewApp().
Ollivier Robert <roberto@keltia.net>
parents: 66
diff changeset
    58
		BaseURL:     "https://mastodon.social",
57
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
    59
	}
63
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    60
	file = filepath.Join("test", "foo")
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    61
	s, err := loadInstance(file)
57
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
    62
	assert.NoError(t, err, "all fine")
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
    63
	assert.Equal(t, real, s, "equal")
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
    64
}
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
    65
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
    66
func TestGetInstanceList(t *testing.T) {
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
    67
	baseDir = "test"
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
    68
63
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    69
	real := []string{
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    70
		filepath.Join("test", "foo.token"),
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    71
		filepath.Join("test", "garbage.token"),
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    72
	}
57
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
    73
	list := GetInstanceList()
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
    74
	assert.Equal(t, real, list, "equal")
58
3ec984cfcb12 Some more tests.
Ollivier Robert <roberto@keltia.net>
parents: 57
diff changeset
    75
3ec984cfcb12 Some more tests.
Ollivier Robert <roberto@keltia.net>
parents: 57
diff changeset
    76
	baseDir = "/tmp"
3ec984cfcb12 Some more tests.
Ollivier Robert <roberto@keltia.net>
parents: 57
diff changeset
    77
	real = nil
3ec984cfcb12 Some more tests.
Ollivier Robert <roberto@keltia.net>
parents: 57
diff changeset
    78
	list = GetInstanceList()
3ec984cfcb12 Some more tests.
Ollivier Robert <roberto@keltia.net>
parents: 57
diff changeset
    79
	assert.Equal(t, real, list, "equal")
60
ca2a067d21af More tests.
Ollivier Robert <roberto@keltia.net>
parents: 58
diff changeset
    80
ca2a067d21af More tests.
Ollivier Robert <roberto@keltia.net>
parents: 58
diff changeset
    81
	baseDir = "/nonexistent"
ca2a067d21af More tests.
Ollivier Robert <roberto@keltia.net>
parents: 58
diff changeset
    82
	real = nil
ca2a067d21af More tests.
Ollivier Robert <roberto@keltia.net>
parents: 58
diff changeset
    83
	list = GetInstanceList()
ca2a067d21af More tests.
Ollivier Robert <roberto@keltia.net>
parents: 58
diff changeset
    84
	assert.Equal(t, real, list, "equal")
57
5effcb7253a8 gofmt pass.
Ollivier Robert <roberto@keltia.net>
parents: 47
diff changeset
    85
}
63
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    86
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    87
func TestLoadConfig(t *testing.T) {
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    88
	baseDir = "test"
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    89
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    90
	_, err := LoadConfig("foo")
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    91
	assert.NoError(t, err, "should be fine")
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    92
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    93
	_, err = LoadConfig("")
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    94
	assert.NoError(t, err, "should be fine")
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    95
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    96
	err = os.Chmod(filepath.Join("test", "config.toml"), 0000)
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    97
	assert.NoError(t, err, "should be fine")
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    98
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
    99
	_, err = LoadConfig("")
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
   100
	assert.Error(t, err, "should be unreadable")
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
   101
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
   102
	err = os.Chmod(filepath.Join("test", "config.toml"), 0600)
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
   103
	assert.NoError(t, err, "should be fine")
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
   104
8d31e8907662 More tests.
Ollivier Robert <roberto@keltia.net>
parents: 60
diff changeset
   105
}