mirror of
https://github.com/kataras/iris.git
synced 2025-12-17 18:07:01 +00:00
Add iris.TOML to load configuration from toml-syntax based documents.
Former-commit-id: f92dc5bcaa92ca13aaf892dc27829ae33907b387
This commit is contained in:
@@ -103,19 +103,19 @@ func TestConfigurationYAML(t *testing.T) {
|
||||
}()
|
||||
|
||||
yamlConfigurationContents := `
|
||||
VHost: iris-go.com
|
||||
VScheme: https://
|
||||
ReadTimeout: 0
|
||||
WriteTimeout: 5s
|
||||
MaxHeaderBytes: 8096
|
||||
CheckForUpdates: true
|
||||
DisablePathCorrection: false
|
||||
EnablePathEscape: false
|
||||
FireMethodNotAllowed: true
|
||||
DisableBodyConsumptionOnUnmarshal: true
|
||||
TimeFormat: Mon, 01 Jan 2006 15:04:05 GMT
|
||||
Charset: UTF-8
|
||||
Gzip: true
|
||||
VHost: iris-go.com
|
||||
VScheme: https://
|
||||
ReadTimeout: 0
|
||||
WriteTimeout: 5s
|
||||
MaxHeaderBytes: 8096
|
||||
CheckForUpdates: true
|
||||
DisablePathCorrection: false
|
||||
EnablePathEscape: false
|
||||
FireMethodNotAllowed: true
|
||||
DisableBodyConsumptionOnUnmarshal: true
|
||||
TimeFormat: Mon, 01 Jan 2006 15:04:05 GMT
|
||||
Charset: UTF-8
|
||||
Gzip: true
|
||||
|
||||
`
|
||||
yamlFile.WriteString(yamlConfigurationContents)
|
||||
@@ -133,7 +133,7 @@ func TestConfigurationYAML(t *testing.T) {
|
||||
}
|
||||
|
||||
if expected := 0; c.ReadTimeout != time.Duration(expected) {
|
||||
t.Fatalf("error on TestConfigurationYAML: Expected ReadTimeout %s but got %s", expected, c.ReadTimeout)
|
||||
t.Fatalf("error on TestConfigurationYAML: Expected ReadTimeout %d but got %s", expected, c.ReadTimeout)
|
||||
}
|
||||
|
||||
if expected := time.Duration(5 * time.Second); c.WriteTimeout != expected {
|
||||
@@ -141,7 +141,7 @@ func TestConfigurationYAML(t *testing.T) {
|
||||
}
|
||||
|
||||
if expected := 8096; c.MaxHeaderBytes != expected {
|
||||
t.Fatalf("error on TestConfigurationYAML: Expected MaxHeaderBytes %s but got %s", expected, c.MaxHeaderBytes)
|
||||
t.Fatalf("error on TestConfigurationYAML: Expected MaxHeaderBytes %d but got %d", expected, c.MaxHeaderBytes)
|
||||
}
|
||||
|
||||
if expected := true; c.CheckForUpdates != expected {
|
||||
@@ -177,3 +177,105 @@ func TestConfigurationYAML(t *testing.T) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestConfigurationTOML(t *testing.T) {
|
||||
// create the key and cert files on the fly, and delete them when this test finished
|
||||
tomlFile, ferr := ioutil.TempFile("", "configuration.toml")
|
||||
|
||||
if ferr != nil {
|
||||
t.Fatal(ferr)
|
||||
}
|
||||
|
||||
defer func() {
|
||||
tomlFile.Close()
|
||||
time.Sleep(50 * time.Millisecond)
|
||||
os.Remove(tomlFile.Name())
|
||||
}()
|
||||
|
||||
tomlConfigurationContents := `
|
||||
VHost = "iris-go.com"
|
||||
VScheme = "https://"
|
||||
ReadTimeout = 0
|
||||
# Go's toml doesn't supports implicit time.Duration
|
||||
# There is a solution: I have to write a custom duration which implements the encoding.TextUnmarshaler
|
||||
# but to use a custom type for time.Duration is not wise.
|
||||
# So instead of 5s , we just use the 5 000 000 000 nanoseconds on WriteTimeOut.
|
||||
WriteTimeout = 5000000000
|
||||
MaxHeaderBytes = 8096
|
||||
CheckForUpdates = true
|
||||
DisablePathCorrection = false
|
||||
EnablePathEscape = false
|
||||
FireMethodNotAllowed = true
|
||||
DisableBodyConsumptionOnUnmarshal = true
|
||||
TimeFormat = "Mon, 01 Jan 2006 15:04:05 GMT"
|
||||
Charset = "UTF-8"
|
||||
Gzip = true
|
||||
|
||||
[Other]
|
||||
# Indentation (tabs and/or spaces) is allowed but not required
|
||||
MyServerName = "Iris.v6"
|
||||
|
||||
`
|
||||
tomlFile.WriteString(tomlConfigurationContents)
|
||||
filename := tomlFile.Name()
|
||||
app := New(TOML(filename))
|
||||
|
||||
c := app.Config
|
||||
|
||||
if expected := "iris-go.com"; c.VHost != expected {
|
||||
t.Fatalf("error on TestConfigurationTOML: Expected VHost %s but got %s", expected, c.VHost)
|
||||
}
|
||||
|
||||
if expected := "https://"; c.VScheme != expected {
|
||||
t.Fatalf("error on TestConfigurationTOML: Expected VScheme %s but got %s", expected, c.VScheme)
|
||||
}
|
||||
|
||||
if expected := 0; c.ReadTimeout != time.Duration(expected) {
|
||||
t.Fatalf("error on TestConfigurationTOML: Expected ReadTimeout %d but got %s", expected, c.ReadTimeout)
|
||||
}
|
||||
|
||||
if expected := time.Duration(5 * time.Second); c.WriteTimeout != expected {
|
||||
t.Fatalf("error on TestConfigurationTOML: Expected WriteTimeout %s but got %s", expected, c.WriteTimeout)
|
||||
}
|
||||
|
||||
if expected := 8096; c.MaxHeaderBytes != expected {
|
||||
t.Fatalf("error on TestConfigurationTOML: Expected MaxHeaderBytes %d but got %d", expected, c.MaxHeaderBytes)
|
||||
}
|
||||
|
||||
if expected := true; c.CheckForUpdates != expected {
|
||||
t.Fatalf("error on TestConfigurationTOML: Expected checkForUpdates %v but got %v", expected, c.CheckForUpdates)
|
||||
}
|
||||
|
||||
if expected := false; c.DisablePathCorrection != expected {
|
||||
t.Fatalf("error on TestConfigurationTOML: Expected DisablePathCorrection %v but got %v", expected, c.DisablePathCorrection)
|
||||
}
|
||||
|
||||
if expected := false; c.EnablePathEscape != expected {
|
||||
t.Fatalf("error on TestConfigurationTOML: Expected EnablePathEscape %v but got %v", expected, c.EnablePathEscape)
|
||||
}
|
||||
|
||||
if expected := true; c.FireMethodNotAllowed != expected {
|
||||
t.Fatalf("error on TestConfigurationTOML: Expected FireMethodNotAllowed %v but got %v", expected, c.FireMethodNotAllowed)
|
||||
}
|
||||
|
||||
if expected := true; c.DisableBodyConsumptionOnUnmarshal != expected {
|
||||
t.Fatalf("error on TestConfigurationTOML: Expected DisableBodyConsumptionOnUnmarshal %v but got %v", expected, c.DisableBodyConsumptionOnUnmarshal)
|
||||
}
|
||||
|
||||
if expected := "Mon, 01 Jan 2006 15:04:05 GMT"; c.TimeFormat != expected {
|
||||
t.Fatalf("error on TestConfigurationTOML: Expected TimeFormat %s but got %s", expected, c.TimeFormat)
|
||||
}
|
||||
|
||||
if expected := "UTF-8"; c.Charset != expected {
|
||||
t.Fatalf("error on TestConfigurationTOML: Expected Charset %s but got %s", expected, c.Charset)
|
||||
}
|
||||
|
||||
if expected := true; c.Gzip != expected {
|
||||
t.Fatalf("error on TestConfigurationTOML: Expected != %v but got %v", expected, c.Gzip)
|
||||
}
|
||||
|
||||
if expected := "Iris.v6"; c.Other["MyServerName"] != expected {
|
||||
t.Fatalf("error on TestConfigurationTOML: Expected(Other) != %v but got %v", expected, c.Gzip)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user