зеркало из https://github.com/mozilla/mig.git
Wrote some unit tests for the runner-scribe configuration parsing to make sure the new useProxy parameter is being handled correctly
This commit is contained in:
Родитель
4da33511a8
Коммит
10b7851a17
1
Makefile
1
Makefile
|
@ -314,6 +314,7 @@ test: test-modules
|
||||||
$(GO) test github.com/mozilla/mig/mig-scheduler/...
|
$(GO) test github.com/mozilla/mig/mig-scheduler/...
|
||||||
$(GO) test github.com/mozilla/mig/mig-api/...
|
$(GO) test github.com/mozilla/mig/mig-api/...
|
||||||
$(GO) test github.com/mozilla/mig/mig-runner/...
|
$(GO) test github.com/mozilla/mig/mig-runner/...
|
||||||
|
$(GO) test github.com/mozilla/mig/runner-plugins/...
|
||||||
$(GO) test github.com/mozilla/mig/mig-loader/...
|
$(GO) test github.com/mozilla/mig/mig-loader/...
|
||||||
$(GO) test github.com/mozilla/mig/client/...
|
$(GO) test github.com/mozilla/mig/client/...
|
||||||
$(GO) test github.com/mozilla/mig/database/...
|
$(GO) test github.com/mozilla/mig/database/...
|
||||||
|
|
|
@ -0,0 +1,118 @@
|
||||||
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
//
|
||||||
|
// Contributor: Zack Mullaly zmullaly@mozilla.com [:zack]
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"gopkg.in/gcfg.v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
type mozdef struct {
|
||||||
|
URL string
|
||||||
|
Source string
|
||||||
|
UseProxy bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestConfigParsing(t *testing.T) {
|
||||||
|
testCases := []struct {
|
||||||
|
Description string
|
||||||
|
ConfigString string
|
||||||
|
ExpectedConfig config
|
||||||
|
ExpectError bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
Description: "A valid configuration should parse correctly",
|
||||||
|
ConfigString: `
|
||||||
|
[mozdef]
|
||||||
|
url = "testurl"
|
||||||
|
source = "mozdef"
|
||||||
|
useProxy = true
|
||||||
|
`,
|
||||||
|
ExpectedConfig: config{
|
||||||
|
MozDef: mozdef{
|
||||||
|
URL: "testurl",
|
||||||
|
Source: "mozdef",
|
||||||
|
UseProxy: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ExpectError: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Description: "Parsing fails if UseProxy is not a boolean",
|
||||||
|
ConfigString: `
|
||||||
|
[mozdef]
|
||||||
|
url = "testurl"
|
||||||
|
source = "mozdef"
|
||||||
|
useProxy = "notbool"
|
||||||
|
`,
|
||||||
|
ExpectedConfig: config{
|
||||||
|
MozDef: mozdef{
|
||||||
|
URL: "testurl",
|
||||||
|
Source: "mozdef",
|
||||||
|
UseProxy: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ExpectError: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for caseNum, testCase := range testCases {
|
||||||
|
t.Logf("Running TestConfigParsing case #%d: %s", caseNum, testCase.Description)
|
||||||
|
|
||||||
|
configFile, err := ioutil.TempFile("", "*.cfg")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err = configFile.Write([]byte(testCase.ConfigString)); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if err = configFile.Close(); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
conf := config{}
|
||||||
|
parseErr := gcfg.ReadFileInto(&conf, configFile.Name())
|
||||||
|
|
||||||
|
gotErr := parseErr != nil
|
||||||
|
if gotErr && !testCase.ExpectError {
|
||||||
|
t.Errorf("Did not expect to get a parse error, but got '%s'", parseErr.Error())
|
||||||
|
} else if !gotErr && testCase.ExpectError {
|
||||||
|
t.Errorf("Expected to get a parse error, but did not")
|
||||||
|
}
|
||||||
|
|
||||||
|
os.Remove(configFile.Name())
|
||||||
|
|
||||||
|
if testCase.ExpectError {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if conf.MozDef.URL != testCase.ExpectedConfig.MozDef.URL {
|
||||||
|
t.Errorf(
|
||||||
|
"Expected parsed URL to be %s but it's %s",
|
||||||
|
testCase.ExpectedConfig.MozDef.URL,
|
||||||
|
conf.MozDef.URL)
|
||||||
|
}
|
||||||
|
|
||||||
|
if conf.MozDef.Source != testCase.ExpectedConfig.MozDef.Source {
|
||||||
|
t.Errorf(
|
||||||
|
"Expected parsed Source to be %s but it's %s",
|
||||||
|
testCase.ExpectedConfig.MozDef.Source,
|
||||||
|
conf.MozDef.Source)
|
||||||
|
}
|
||||||
|
|
||||||
|
if conf.MozDef.UseProxy != testCase.ExpectedConfig.MozDef.UseProxy {
|
||||||
|
t.Errorf(
|
||||||
|
"Expected parsed UseProxy to be %v but it's %v",
|
||||||
|
testCase.ExpectedConfig.MozDef.UseProxy,
|
||||||
|
conf.MozDef.UseProxy)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Загрузка…
Ссылка в новой задаче