66 lines
1.7 KiB
Go
66 lines
1.7 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
package stream
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestEvent_IsEndOfSnapshot(t *testing.T) {
|
|
e := Event{Payload: endOfSnapshot{}}
|
|
require.True(t, e.IsEndOfSnapshot())
|
|
|
|
t.Run("not EndOfSnapshot", func(t *testing.T) {
|
|
e := Event{Payload: newSnapshotToFollow{}}
|
|
require.False(t, e.IsEndOfSnapshot())
|
|
})
|
|
}
|
|
|
|
func newSimpleEvent(key string, index uint64) Event {
|
|
return Event{Index: index, Payload: simplePayload{key: key}}
|
|
}
|
|
|
|
// TODO(partitions)
|
|
func newNSEvent(key, namespace string) Event {
|
|
return Event{Index: 22, Payload: nsPayload{key: key, namespace: namespace}}
|
|
}
|
|
|
|
type nsPayload struct {
|
|
framingEvent
|
|
key string
|
|
namespace string
|
|
partition string
|
|
value string
|
|
}
|
|
|
|
func TestPayloadEvents_HasReadPermission(t *testing.T) {
|
|
t.Run("some events filtered", func(t *testing.T) {
|
|
ep := newPayloadEvents(
|
|
Event{Payload: simplePayload{key: "one", noReadPerm: true}},
|
|
Event{Payload: simplePayload{key: "two", noReadPerm: false}},
|
|
Event{Payload: simplePayload{key: "three", noReadPerm: true}},
|
|
Event{Payload: simplePayload{key: "four", noReadPerm: false}})
|
|
|
|
require.True(t, ep.HasReadPermission(nil))
|
|
expected := []Event{
|
|
{Payload: simplePayload{key: "two"}},
|
|
{Payload: simplePayload{key: "four"}},
|
|
}
|
|
require.Equal(t, expected, ep.Items)
|
|
})
|
|
|
|
t.Run("all events filtered", func(t *testing.T) {
|
|
ep := newPayloadEvents(
|
|
Event{Payload: simplePayload{key: "one", noReadPerm: true}},
|
|
Event{Payload: simplePayload{key: "two", noReadPerm: true}},
|
|
Event{Payload: simplePayload{key: "three", noReadPerm: true}},
|
|
Event{Payload: simplePayload{key: "four", noReadPerm: true}})
|
|
|
|
require.False(t, ep.HasReadPermission(nil))
|
|
})
|
|
|
|
}
|