e8a883e829
* testing: replace most goe/verify.Values with require.Equal One difference between these two comparisons is that go/verify considers nil slices/maps to be equal to empty slices/maps, where as testify/require does not, and does not appear to provide any way to enable that behaviour. Because of this difference some expected values were changed from empty slices to nil slices, and some calls to verify.Values were left. * Remove github.com/pascaldekloe/goe/verify Reduce the number of assertion packages we use from 2 to 1
88 lines
1.9 KiB
Go
88 lines
1.9 KiB
Go
package structs
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestAgentStructs_CheckTypes(t *testing.T) {
|
|
svc := new(ServiceDefinition)
|
|
|
|
// Singular Check field works
|
|
svc.Check = CheckType{
|
|
ScriptArgs: []string{"/foo/bar"},
|
|
Interval: 10 * time.Second,
|
|
}
|
|
|
|
// Returns HTTP checks
|
|
svc.Checks = append(svc.Checks, &CheckType{
|
|
HTTP: "http://foo/bar",
|
|
Interval: 10 * time.Second,
|
|
})
|
|
|
|
// Returns Script checks
|
|
svc.Checks = append(svc.Checks, &CheckType{
|
|
ScriptArgs: []string{"/foo/bar"},
|
|
Interval: 10 * time.Second,
|
|
})
|
|
|
|
// Returns TTL checks
|
|
svc.Checks = append(svc.Checks, &CheckType{
|
|
TTL: 10 * time.Second,
|
|
})
|
|
|
|
// Validate checks
|
|
cases := []struct {
|
|
in *CheckType
|
|
err error
|
|
desc string
|
|
}{
|
|
{&CheckType{HTTP: "http://foo/baz"}, fmt.Errorf("Interval must be > 0 for Script, HTTP, or TCP checks"), "Missing interval"},
|
|
{&CheckType{TTL: -1}, fmt.Errorf("TTL must be > 0 for TTL checks"), "Negative TTL"},
|
|
{&CheckType{TTL: 20 * time.Second, Interval: 10 * time.Second}, fmt.Errorf("Interval and TTL cannot both be specified"), "Interval and TTL both set"},
|
|
}
|
|
for _, tc := range cases {
|
|
t.Run(tc.desc, func(t *testing.T) {
|
|
svc.Check = *tc.in
|
|
checks, err := svc.CheckTypes()
|
|
require.Error(t, err, tc.err.Error())
|
|
require.Len(t, checks, 0)
|
|
})
|
|
|
|
}
|
|
}
|
|
|
|
func TestServiceDefinitionValidate(t *testing.T) {
|
|
cases := []struct {
|
|
Name string
|
|
Modify func(*ServiceDefinition)
|
|
Err string
|
|
}{
|
|
{
|
|
"valid",
|
|
func(x *ServiceDefinition) {},
|
|
"",
|
|
},
|
|
}
|
|
|
|
for _, tc := range cases {
|
|
t.Run(tc.Name, func(t *testing.T) {
|
|
require := require.New(t)
|
|
service := TestServiceDefinition(t)
|
|
tc.Modify(service)
|
|
|
|
err := service.Validate()
|
|
if tc.Err == "" {
|
|
require.NoError(err)
|
|
} else {
|
|
require.Error(err)
|
|
require.Contains(strings.ToLower(err.Error()), strings.ToLower(tc.Err))
|
|
}
|
|
})
|
|
}
|
|
}
|