2018-01-16 14:05:22 +00:00
|
|
|
package models
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"io/ioutil"
|
|
|
|
"os"
|
2018-01-16 15:24:29 +00:00
|
|
|
"testing"
|
2018-01-16 14:05:22 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestSetConfig(t *testing.T) {
|
|
|
|
// Create test database
|
|
|
|
assert.NoError(t, PrepareTestDatabase())
|
|
|
|
|
2018-01-25 13:39:27 +00:00
|
|
|
// This should fail as it is looking for a nonexistent config
|
|
|
|
err := SetConfig()
|
|
|
|
assert.Error(t, err)
|
|
|
|
|
|
|
|
// Write an invalid config
|
|
|
|
configString := `[General
|
|
|
|
JWTSecret = Supersecret
|
|
|
|
Interface = ; This should make it automatically to :8080
|
|
|
|
|
|
|
|
[Database
|
|
|
|
Type = sqlite
|
|
|
|
Path = ./library.db
|
|
|
|
|
|
|
|
[User
|
|
|
|
Name = nope
|
|
|
|
Username = user
|
|
|
|
Passw]ord = 1234
|
|
|
|
Email = nope@none.com`
|
|
|
|
err = ioutil.WriteFile("config.ini", []byte(configString), 0644)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
// Test setConfig (should fail as we're trying to parse an invalid config)
|
|
|
|
err = SetConfig()
|
|
|
|
assert.Error(t, err)
|
|
|
|
|
|
|
|
// Delete the invalid file
|
|
|
|
err = os.Remove("config.ini")
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
2018-01-16 14:05:22 +00:00
|
|
|
// Write a fake config
|
2018-01-25 13:39:27 +00:00
|
|
|
configString = `[General]
|
2018-01-16 14:05:22 +00:00
|
|
|
JWTSecret = Supersecret
|
2018-01-25 13:39:27 +00:00
|
|
|
Interface = ; This should make it automatically to :8080
|
2018-01-16 14:05:22 +00:00
|
|
|
|
|
|
|
[Database]
|
|
|
|
Type = sqlite
|
|
|
|
Path = ./library.db
|
|
|
|
|
|
|
|
[User]
|
|
|
|
Name = nope
|
|
|
|
Username = user
|
|
|
|
Password = 1234
|
|
|
|
Email = nope@none.com`
|
2018-01-25 13:39:27 +00:00
|
|
|
err = ioutil.WriteFile("config.ini", []byte(configString), 0644)
|
2018-01-16 14:05:22 +00:00
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
// Test setConfig
|
|
|
|
err = SetConfig()
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
// Check for the values
|
|
|
|
assert.Equal(t, []byte("Supersecret"), Config.JWTLoginSecret)
|
|
|
|
assert.Equal(t, string(":8080"), Config.Interface)
|
|
|
|
assert.Equal(t, string("sqlite"), Config.Database.Type)
|
|
|
|
assert.Equal(t, string("./library.db"), Config.Database.Path)
|
|
|
|
assert.Equal(t, string("nope"), Config.FirstUser.Name)
|
|
|
|
assert.Equal(t, string("user"), Config.FirstUser.Username)
|
|
|
|
assert.Equal(t, string("1234"), Config.FirstUser.Password)
|
|
|
|
assert.Equal(t, string("nope@none.com"), Config.FirstUser.Email)
|
|
|
|
|
|
|
|
// Remove the dummy config
|
|
|
|
err = os.Remove("config.ini")
|
|
|
|
assert.NoError(t, err)
|
|
|
|
}
|