package audit_test

import (
	"testing"
	"time"

	"v.io/core/veyron/security/audit"
)

func TestEntryString(t *testing.T) {
	timestamp, err := time.Parse(time.RFC3339, "2014-08-08T14:39:25-07:00") // "2014-08-08 12:56:40.698493437 -0700 PDT")
	if err != nil {
		t.Fatal(err)
	}
	var (
		onearg      = []interface{}{"Arg"}
		manyargs    = []interface{}{"Arg1", "Arg2"}
		oneresult   = []interface{}{"Result"}
		manyresults = []interface{}{"Res1", "Res2"}
		tests       = []struct {
			Entry  audit.Entry
			String string
		}{
			// No results, 0, 1 or multiple arguments
			{audit.Entry{Method: "M"}, "2014-08-08T14:39:25-07:00: M()"},
			{audit.Entry{Method: "M", Arguments: onearg}, "2014-08-08T14:39:25-07:00: M(Arg)"},
			{audit.Entry{Method: "M", Arguments: manyargs}, "2014-08-08T14:39:25-07:00: M(Arg1, Arg2)"},
			// 1 result, 0, 1 or multiple arguments
			{audit.Entry{Method: "M", Results: oneresult}, "2014-08-08T14:39:25-07:00: M() = (Result)"},
			{audit.Entry{Method: "M", Arguments: onearg, Results: oneresult}, "2014-08-08T14:39:25-07:00: M(Arg) = (Result)"},
			{audit.Entry{Method: "M", Arguments: manyargs, Results: oneresult}, "2014-08-08T14:39:25-07:00: M(Arg1, Arg2) = (Result)"},
			// Multiple results, 0, 1 or multiple arguments
			{audit.Entry{Method: "M", Results: manyresults}, "2014-08-08T14:39:25-07:00: M() = (Res1, Res2)"},
			{audit.Entry{Method: "M", Arguments: onearg, Results: manyresults}, "2014-08-08T14:39:25-07:00: M(Arg) = (Res1, Res2)"},
			{audit.Entry{Method: "M", Arguments: manyargs, Results: manyresults}, "2014-08-08T14:39:25-07:00: M(Arg1, Arg2) = (Res1, Res2)"},
		}
	)

	for _, test := range tests {
		test.Entry.Timestamp = timestamp
		if got, want := test.Entry.String(), test.String; got != want {
			t.Errorf("Got %q want %q for [%#v]", got, want, test.Entry)
		}
	}
}
