mirror of
https://dev.azure.com/schwarzit/schwarzit.stackit-public/_git/audit-go
synced 2026-02-08 00:57:24 +00:00
88 lines
2.6 KiB
Go
88 lines
2.6 KiB
Go
package api
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
pkgAuditCommon "dev.azure.com/schwarzit/schwarzit.stackit-public/audit-go.git/pkg/audit/common"
|
|
)
|
|
|
|
func Test_ToBase64(t *testing.T) {
|
|
|
|
t.Run("cloud event nil", func(t *testing.T) {
|
|
var cloudEvent *pkgAuditCommon.CloudEvent = nil
|
|
routableIdentifier := pkgAuditCommon.RoutableSystemIdentifier
|
|
|
|
base64str, err := ToBase64(cloudEvent, routableIdentifier)
|
|
assert.ErrorIs(t, err, pkgAuditCommon.ErrCloudEventNil)
|
|
assert.Nil(t, base64str)
|
|
})
|
|
|
|
t.Run("routable identifier nil", func(t *testing.T) {
|
|
cloudEvent := &pkgAuditCommon.CloudEvent{}
|
|
var routableIdentifier *pkgAuditCommon.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 := &pkgAuditCommon.CloudEvent{}
|
|
r := pkgAuditCommon.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 := &pkgAuditCommon.CloudEvent{}
|
|
r := pkgAuditCommon.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)
|
|
})
|
|
}
|