Add tests for parseLogOptions()
This commit is contained in:
99
node/api/logs_test.go
Normal file
99
node/api/logs_test.go
Normal file
@@ -0,0 +1,99 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/url"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"gotest.tools/assert"
|
||||
is "gotest.tools/assert/cmp"
|
||||
)
|
||||
|
||||
//func parseLogOptions(q url.Values) (opts ContainerLogOpts, err error)
|
||||
func TestParseLogOptions(t *testing.T) {
|
||||
//tailLines
|
||||
//follow
|
||||
//limitBytes
|
||||
//previous
|
||||
//sinceSeconds
|
||||
//sinceTime
|
||||
//timestamps
|
||||
sinceTime, _ := time.Parse(time.RFC3339, "2020-03-20T21:07:34Z")
|
||||
fmt.Printf("%+v\n", sinceTime)
|
||||
testCases := []struct {
|
||||
Values url.Values
|
||||
Failure bool
|
||||
Result ContainerLogOpts
|
||||
}{
|
||||
{
|
||||
Values: url.Values{},
|
||||
Failure: false,
|
||||
Result: ContainerLogOpts{},
|
||||
},
|
||||
{
|
||||
Values: url.Values{
|
||||
"follow": {"true"},
|
||||
"limitBytes": {"123"},
|
||||
"previous": {"true"},
|
||||
"sinceSeconds": {"10"},
|
||||
"tailLines": {"99"},
|
||||
"timestamps": {"true"},
|
||||
},
|
||||
Failure: false,
|
||||
Result: ContainerLogOpts{
|
||||
Follow: true,
|
||||
LimitBytes: 123,
|
||||
Previous: true,
|
||||
SinceSeconds: 10,
|
||||
Tail: 99,
|
||||
Timestamps: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
Values: url.Values{
|
||||
"sinceSeconds": {"10"},
|
||||
"sinceTime": {"2020-03-20T21:07:34Z"},
|
||||
},
|
||||
Failure: true,
|
||||
},
|
||||
{
|
||||
Values: url.Values{
|
||||
"sinceTime": {"2020-03-20T21:07:34Z"},
|
||||
},
|
||||
Failure: false,
|
||||
Result: ContainerLogOpts{
|
||||
SinceTime: sinceTime,
|
||||
},
|
||||
},
|
||||
{
|
||||
Values: url.Values{
|
||||
"tailLines": {"-1"},
|
||||
},
|
||||
Failure: true,
|
||||
},
|
||||
{
|
||||
Values: url.Values{
|
||||
"limitBytes": {"0"},
|
||||
},
|
||||
Failure: true,
|
||||
},
|
||||
{
|
||||
Values: url.Values{
|
||||
"sinceSeconds": {"-10"},
|
||||
},
|
||||
Failure: true,
|
||||
},
|
||||
}
|
||||
// follow=true&limitBytes=1&previous=true&sinceSeconds=1&sinceTime=2020-03-20T21%3A07%3A34Z&tailLines=1×tamps=true
|
||||
for i, tc := range testCases {
|
||||
msg := fmt.Sprintf("test case #%d %+v failed", i+1, tc)
|
||||
result, err := parseLogOptions(tc.Values)
|
||||
if tc.Failure {
|
||||
assert.Check(t, is.ErrorContains(err, ""), msg)
|
||||
} else {
|
||||
assert.NilError(t, err, msg)
|
||||
assert.Check(t, is.Equal(result, tc.Result), msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user