You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
boundary/internal/bsr/magic_test.go

60 lines
1.1 KiB

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package bsr_test
import (
"bytes"
"errors"
"io"
"testing"
"github.com/hashicorp/boundary/internal/bsr"
"github.com/stretchr/testify/assert"
)
func TestMagic(t *testing.T) {
assert.Equal(t, string(bsr.Magic), "\x89BSR\r\n\x1a\n")
assert.Equal(t, bsr.Magic.Bytes(), []byte("\x89BSR\r\n\x1a\n"))
}
func TestReadMagic(t *testing.T) {
cases := []struct {
name string
r io.Reader
want error
}{
{
"valid",
bytes.NewBuffer([]byte(bsr.Magic)),
nil,
},
{
"nil-reader",
nil,
errors.New("bsr.ReadMagic: reader is nil: invalid parameter"),
},
{
"not-enough-chars",
bytes.NewBuffer([]byte(bsr.Magic)[:len(bsr.Magic)-1]),
errors.New("bsr.ReadMagic: unexpected EOF"),
},
{
"not-magic",
bytes.NewBuffer([]byte("notthemagic")),
errors.New("bsr.ReadMagic: invalid magic string"),
},
}
for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {
got := bsr.ReadMagic(tc.r)
if tc.want == nil {
assert.NoError(t, got)
return
}
assert.EqualError(t, got, tc.want.Error())
})
}
}