audit-go/audit/api/base64_test.go
2024-10-30 10:32:07 +00:00

85 lines
2.4 KiB
Go

package api
import (
"encoding/base64"
"github.com/stretchr/testify/assert"
"testing"
)
func Test_ToBase64(t *testing.T) {
t.Run("cloud event nil", func(t *testing.T) {
var cloudEvent *CloudEvent = nil
routableIdentifier := RoutableSystemIdentifier
base64str, err := ToBase64(cloudEvent, routableIdentifier)
assert.ErrorIs(t, err, ErrCloudEventNil)
assert.Nil(t, base64str)
})
t.Run("routable identifier nil", func(t *testing.T) {
cloudEvent := &CloudEvent{}
var routableIdentifier *RoutableIdentifier = nil
base64str, err := ToBase64(cloudEvent, routableIdentifier)
assert.ErrorIs(t, err, ErrRoutableIdentifierNil)
assert.Nil(t, base64str)
})
t.Run("encoded event", func(t *testing.T) {
e := &CloudEvent{}
r := RoutableSystemIdentifier
base64str, err := ToBase64(e, r)
assert.NoError(t, err)
cloudEvent, routableIdentifier, err := FromBase64(*base64str)
assert.NoError(t, err)
assert.Equal(t, e, cloudEvent)
assert.Equal(t, r, routableIdentifier)
})
}
func Test_FromBase64(t *testing.T) {
t.Run("empty string", func(t *testing.T) {
cloudEvent, routableIdentifier, err := FromBase64("")
assert.ErrorIs(t, err, ErrBase64StringEmpty)
assert.Nil(t, cloudEvent)
assert.Nil(t, routableIdentifier)
})
t.Run("without version suffix", func(t *testing.T) {
cloudEvent, routableIdentifier, err := FromBase64("ey")
assert.ErrorIs(t, err, ErrUnsupportedBase64StringVersion)
assert.Nil(t, cloudEvent)
assert.Nil(t, routableIdentifier)
})
t.Run("no base64 string", func(t *testing.T) {
cloudEvent, routableIdentifier, err := FromBase64("no base 64 v1")
assert.EqualError(t, err, "illegal base64 data at input byte 2")
assert.Nil(t, cloudEvent)
assert.Nil(t, routableIdentifier)
})
t.Run("no json serialized event", func(t *testing.T) {
base64Str := base64.StdEncoding.EncodeToString([]byte("not expected"))
base64Str = base64Str + base64AuditEventV1
cloudEvent, routableIdentifier, err := FromBase64(base64Str)
assert.EqualError(t, err, "invalid character 'o' in literal null (expecting 'u')")
assert.Nil(t, cloudEvent)
assert.Nil(t, routableIdentifier)
})
t.Run("decoded event", func(t *testing.T) {
e := &CloudEvent{}
r := RoutableSystemIdentifier
base64str, err := ToBase64(e, r)
assert.NoError(t, err)
cloudEvent, routableIdentifier, err := FromBase64(*base64str)
assert.NoError(t, err)
assert.Equal(t, e, cloudEvent)
assert.Equal(t, r, routableIdentifier)
})
}