/
assertions.go
48 lines (42 loc) · 1.81 KB
/
assertions.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package segment
import (
"testing"
toolchainv1alpha1 "github.com/codeready-toolchain/api/api/v1alpha1"
"github.com/codeready-toolchain/host-operator/pkg/segment"
"github.com/segmentio/analytics-go/v3"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func AssertMessageQueuedForProvisionedMur(t *testing.T, cl *segment.Client, us *toolchainv1alpha1.UserSignup, murName string) {
assertMessageQueued(t, cl, murName, us.Spec.IdentityClaims.UserID, us.Spec.IdentityClaims.AccountID, "account activated")
}
func assertMessageQueued(t *testing.T, cl *segment.Client, username, userID, accountID string, event string) {
require.IsType(t, &MockClient{}, cl.Client())
require.Len(t, cl.Client().(*MockClient).Queue, 1)
expectedTrackEvent := analytics.Track{
UserId: segment.Hash(username),
Event: event,
Properties: analytics.Properties{
"user_id": userID,
"account_id": accountID,
},
Context: &analytics.Context{
Extra: map[string]interface{}{
"groupId": accountID,
},
},
}
actualMessage := cl.Client().(*MockClient).Queue[0]
actualTrackEvent, ok := actualMessage.(analytics.Track)
require.True(t, ok)
assert.Equal(t, expectedTrackEvent.UserId, actualTrackEvent.UserId)
assert.Equal(t, expectedTrackEvent.Event, actualTrackEvent.Event)
assert.Equal(t, expectedTrackEvent.Context, actualTrackEvent.Context)
assert.Equal(t, expectedTrackEvent.Properties["user_id"], actualTrackEvent.Properties["user_id"])
assert.Equal(t, expectedTrackEvent.Properties["account_id"], actualTrackEvent.Properties["account_id"])
assert.NotEmpty(t, actualTrackEvent.Properties["epoch_time"]) // not comparing the timestamp in test
}
func AssertNoMessageQueued(t *testing.T, cl *segment.Client) {
require.IsType(t, &MockClient{}, cl.Client())
assert.Empty(t, cl.Client().(*MockClient).Queue, 0)
}