-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathconversation_test.go
107 lines (83 loc) · 2.87 KB
/
conversation_test.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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
package mixin
import (
"context"
"encoding/base64"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestConversation(t *testing.T) {
ctx := context.Background()
store := newKeystoreFromEnv(t)
c, err := NewFromKeystore(&store.Keystore)
require.Nil(t, err, "init client")
me, err := c.UserMe(ctx)
require.Nil(t, err, "UserMe")
if me.App == nil {
t.SkipNow()
}
id := newUUID()
t.Run("create group conversation", func(t *testing.T) {
conversation, err := c.CreateGroupConversation(ctx, id, "group", []*Participant{
{
UserID: me.App.CreatorID,
},
})
require.Nil(t, err, "create conversation")
assert.Equal(t, id, conversation.ConversationID, "check conversation id")
})
t.Run("send message", func(t *testing.T) {
req := &MessageRequest{
ConversationID: id,
MessageID: newUUID(),
Category: MessageCategoryPlainText,
Data: base64.StdEncoding.EncodeToString([]byte("hello mixin-sdk-go")),
}
require.Nil(t, c.SendMessage(ctx, req), "send message")
})
t.Run("send messages", func(t *testing.T) {
var requests []*MessageRequest
requests = append(requests, &MessageRequest{
ConversationID: id,
MessageID: newUUID(),
RecipientID: me.App.CreatorID,
Category: MessageCategoryPlainText,
Data: base64.StdEncoding.EncodeToString([]byte("1")),
})
requests = append(requests, &MessageRequest{
ConversationID: id,
MessageID: newUUID(),
RecipientID: me.App.CreatorID,
Category: MessageCategoryPlainText,
Data: base64.StdEncoding.EncodeToString([]byte("2")),
})
require.Nil(t, c.SendMessages(ctx, requests), "send messages")
})
t.Run("admin participant", func(t *testing.T) {
_, err := c.AdminParticipants(ctx, id, me.App.CreatorID)
require.Nil(t, err, "admin participant")
})
t.Run("remove participant", func(t *testing.T) {
_, err := c.RemoveParticipants(ctx, id, me.App.CreatorID)
require.Nil(t, err, "remove participant")
})
t.Run("add participant", func(t *testing.T) {
_, err := c.AddParticipants(ctx, id, me.App.CreatorID)
require.Nil(t, err, "add participant")
})
t.Run("rotate conversation", func(t *testing.T) {
conversation, err := c.ReadConversation(ctx, id)
require.Nil(t, err, "read conversation")
rotated, err := c.RotateConversation(ctx, id)
require.Nil(t, err, "rotate conversation")
assert.NotEqual(t, conversation.CodeURL, rotated.CodeURL, "code url should changed")
})
t.Run("update announcement", func(t *testing.T) {
conversation, err := c.ReadConversation(ctx, id)
require.Nil(t, err, "read conversation")
newAnnouncement := conversation.Announcement + " new"
updated, err := c.UpdateConversationAnnouncement(ctx, id, "test")
require.Nil(t, err, "update conversation")
assert.Equal(t, newAnnouncement, updated.Announcement, "announcement should changed")
})
}