diff --git a/node/api/logs_test.go b/node/api/logs_test.go new file mode 100644 index 000000000..99f2ab7cf --- /dev/null +++ b/node/api/logs_test.go @@ -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) + } + } +}