AdGuardDNS/internal/backendpb/profiledb_internal_test.go
Andrey Meshkov 41f7e6cb22 Sync v2.8.0
2024-07-10 19:49:07 +03:00

53 lines
1.2 KiB
Go

package backendpb
import (
"strconv"
"testing"
"time"
"github.com/AdguardTeam/golibs/testutil"
"github.com/stretchr/testify/assert"
"google.golang.org/grpc/metadata"
)
func TestSyncTimeFromTrailer(t *testing.T) {
t.Parallel()
milliseconds := strconv.FormatInt(TestUpdTime.UnixMilli(), 10)
testCases := []struct {
in metadata.MD
wantError string
want time.Time
name string
}{{
in: metadata.MD{},
wantError: "empty value",
want: time.Time{},
name: "no_key",
}, {
in: metadata.MD{"sync_time": []string{}},
wantError: "empty value",
want: time.Time{},
name: "empty_key",
}, {
in: metadata.MD{"sync_time": []string{""}},
wantError: `bad value: strconv.ParseInt: parsing "": invalid syntax`,
want: time.Time{},
name: "empty_value",
}, {
in: metadata.MD{"sync_time": []string{milliseconds}},
wantError: "",
want: TestUpdTime,
name: "success",
}}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
syncTime, err := syncTimeFromTrailer(tc.in)
testutil.AssertErrorMsg(t, tc.wantError, err)
assert.True(t, tc.want.Equal(syncTime), "want %s; got %s", tc.want, syncTime)
})
}
}