github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/helper/raftutil/msgpack_test.go (about) 1 package raftutil 2 3 import ( 4 "bytes" 5 "fmt" 6 "testing" 7 "time" 8 9 "github.com/hashicorp/go-msgpack/codec" 10 "github.com/hashicorp/nomad/ci" 11 "github.com/hashicorp/nomad/nomad/structs" 12 "github.com/stretchr/testify/require" 13 ) 14 15 func TestMaybeDecodeTimeIgnoresASCII(t *testing.T) { 16 cases := []string{ 17 "127.0.0.1/32", 18 "host", 19 } 20 21 for _, c := range cases { 22 t.Run(c, func(t *testing.T) { 23 tt, err := maybeDecodeTime(c) 24 fmt.Println(tt) 25 require.Nil(t, tt) 26 require.Error(t, err) 27 }) 28 } 29 } 30 31 func TestDecodesTime(t *testing.T) { 32 ci.Parallel(t) 33 34 type Value struct { 35 CreateTime time.Time 36 Mode string 37 } 38 now := time.Now().Truncate(time.Second) 39 v := Value{ 40 CreateTime: now, 41 Mode: "host", 42 } 43 44 var buf bytes.Buffer 45 err := codec.NewEncoder(&buf, structs.MsgpackHandle).Encode(v) 46 require.NoError(t, err) 47 48 var r map[string]interface{} 49 err = codec.NewDecoder(&buf, structs.MsgpackHandle).Decode(&r) 50 require.NoError(t, err) 51 52 require.Equal(t, "host", r["Mode"]) 53 require.IsType(t, "", r["CreateTime"]) 54 55 fixTime(r) 56 57 expected := map[string]interface{}{ 58 "CreateTime": now, 59 "Mode": "host", 60 } 61 require.Equal(t, expected, r) 62 } 63 64 func TestMyDate(t *testing.T) { 65 ci.Parallel(t) 66 67 handler := &codec.MsgpackHandle{} 68 handler.TimeNotBuiltin = true 69 70 d := time.Date(2025, 7, 10, 8, 1, 56, 0, time.UTC) 71 72 var buf bytes.Buffer 73 err := codec.NewEncoder(&buf, handler).Encode(d) 74 require.NoError(t, err) 75 76 var s string 77 err = codec.NewDecoder(&buf, handler).Decode(&s) 78 require.NoError(t, err) 79 80 fmt.Printf("Original: %q\nround trips: %q\n", d, s) 81 }