1512 lines
34 KiB
Go
1512 lines
34 KiB
Go
/**
|
||
* @Author: Echo
|
||
* @Email:1711788888@qq.com
|
||
* @Date: 2021/8/27 1:40 下午
|
||
* @Desc: TODO
|
||
*/
|
||
|
||
package im_test
|
||
|
||
import (
|
||
"fmt"
|
||
"math/rand"
|
||
"strconv"
|
||
"testing"
|
||
"time"
|
||
|
||
"git.echol.cn/loser/tencent-im"
|
||
"git.echol.cn/loser/tencent-im/account"
|
||
"git.echol.cn/loser/tencent-im/group"
|
||
"git.echol.cn/loser/tencent-im/operation"
|
||
"git.echol.cn/loser/tencent-im/private"
|
||
"git.echol.cn/loser/tencent-im/profile"
|
||
"git.echol.cn/loser/tencent-im/push"
|
||
"git.echol.cn/loser/tencent-im/recentcontact"
|
||
"git.echol.cn/loser/tencent-im/sns"
|
||
)
|
||
|
||
const (
|
||
assistant = "assistant"
|
||
accountPrefix = "test"
|
||
test1 = "test1"
|
||
test2 = "test2"
|
||
test3 = "test3"
|
||
test4 = "test4"
|
||
test5 = "test5"
|
||
test6 = "test6"
|
||
test7 = "test7"
|
||
test8 = "test8"
|
||
test9 = "test9"
|
||
)
|
||
|
||
func NewIM() im.IM {
|
||
return im.NewIM(&im.Options{
|
||
AppId: 1400564830,
|
||
AppSecret: "0d2a321b087fdb8fd5ed5ea14fe0489139086eb1b03541774fc9feeab8f2bfd3",
|
||
UserId: "administrator",
|
||
Expiration: 3600,
|
||
})
|
||
}
|
||
|
||
// 处理错误
|
||
func handleError(t *testing.T, callName string, err error) {
|
||
if e, ok := err.(im.Error); ok {
|
||
t.Fatalf("call %s failed, code:%d, message:%s.", callName, e.Code(), e.Message())
|
||
} else {
|
||
t.Fatalf("call %s failed, err:%s.", callName, e.Error())
|
||
}
|
||
}
|
||
|
||
func testUserIds() []string {
|
||
return []string{
|
||
test1,
|
||
test2,
|
||
test3,
|
||
test4,
|
||
test5,
|
||
test6,
|
||
test7,
|
||
test8,
|
||
test9,
|
||
}
|
||
}
|
||
|
||
// GetUserSig 获取UserSig签名
|
||
func TestIm_GetUserSig(t *testing.T) {
|
||
tim := NewIM()
|
||
|
||
for i := 0; i < 1000; i++ {
|
||
tim.GetUserSig(assistant)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 导入单个账号
|
||
func TestIm_Account_ImportAccount(t *testing.T) {
|
||
if err := NewIM().Account().ImportAccount(&account.Account{
|
||
UserId: assistant,
|
||
Nickname: "小助手",
|
||
FaceUrl: "http://www.qq.com",
|
||
}); err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 导入多个帐号
|
||
func TestIm_Account_ImportAccounts(t *testing.T) {
|
||
failedAccounts, err := NewIM().Account().ImportAccounts(
|
||
test1,
|
||
test2,
|
||
test3,
|
||
test4,
|
||
test5,
|
||
test6,
|
||
test7,
|
||
test8,
|
||
test9,
|
||
)
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
|
||
t.Log(failedAccounts)
|
||
}
|
||
|
||
// 删除单个账号
|
||
func TestIm_Account_DeleteAccount(t *testing.T) {
|
||
err := NewIM().Account().DeleteAccount(test1)
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 删除多个帐号
|
||
func TestIm_Account_DeleteAccounts(t *testing.T) {
|
||
deleteResults, err := NewIM().Account().DeleteAccounts(
|
||
test1,
|
||
test2,
|
||
test3,
|
||
test4,
|
||
test5,
|
||
test6,
|
||
test7,
|
||
test8,
|
||
test9,
|
||
)
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
|
||
t.Log(deleteResults)
|
||
}
|
||
|
||
// 查询多个帐号
|
||
func TestIm_Account_CheckAccounts(t *testing.T) {
|
||
checkResults, err := NewIM().Account().CheckAccounts(
|
||
test1,
|
||
test2,
|
||
test3,
|
||
test4,
|
||
test5,
|
||
test6,
|
||
test7,
|
||
test8,
|
||
test9,
|
||
)
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
|
||
t.Log(checkResults)
|
||
}
|
||
|
||
// 使帐号登录状态失效
|
||
func TestIm_Account_KickAccount(t *testing.T) {
|
||
if err := NewIM().Account().KickAccount(test1); err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 查询帐号在线状态
|
||
func TestIm_Account_QueryAccountOnlineStatus(t *testing.T) {
|
||
ret, err := NewIM().Account().GetAccountOnlineState(test2, true)
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
|
||
t.Log(ret)
|
||
}
|
||
|
||
// 查询多个帐号在线状态
|
||
func TestIm_Account_QueryAccountsOnlineStatus(t *testing.T) {
|
||
resp, err := NewIM().Account().GetAccountsOnlineState([]string{
|
||
test1,
|
||
test2,
|
||
})
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
|
||
t.Log(resp.Results)
|
||
t.Log(resp.Errors)
|
||
}
|
||
|
||
// 全员推送
|
||
func TestIm_Push_PushMessage(t *testing.T) {
|
||
message := push.NewMessage()
|
||
message.SetSender(assistant)
|
||
message.SetLifeTime(5000)
|
||
message.SetContent(push.MsgTextContent{
|
||
Text: "Hello Tencent IM",
|
||
})
|
||
message.OfflinePush().SetTitle("你好腾讯IM")
|
||
message.OfflinePush().SetDesc("你好腾讯IM,我来了~~~")
|
||
message.OfflinePush().SetPushFlag(push.PushFlagYes)
|
||
message.OfflinePush().SetExt(map[string]interface{}{
|
||
"url": "http://www.tencent.com",
|
||
})
|
||
message.OfflinePush().SetAndroidExtAsHuaweiIntentParam(push.HuaweiIntentParamIntent)
|
||
message.OfflinePush().SetApnsBadgeMode(push.BadgeModeNormal)
|
||
|
||
taskId, err := NewIM().Push().PushMessage(message)
|
||
if err != nil {
|
||
handleError(t, "push.PushMessage", err)
|
||
}
|
||
|
||
t.Log(taskId)
|
||
}
|
||
|
||
// 设置应用属性名称
|
||
func TestIm_Push_SetAttrNames(t *testing.T) {
|
||
if err := NewIM().Push().SetAttrNames(map[int]string{
|
||
0: "age",
|
||
1: "city",
|
||
}); err != nil {
|
||
handleError(t, "push.SetAttrNames", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 获取应用属性名称
|
||
func TestIm_Push_GetAttrNames(t *testing.T) {
|
||
ret, err := NewIM().Push().GetAttrNames()
|
||
if err != nil {
|
||
handleError(t, "push.GetAttrNames", err)
|
||
}
|
||
|
||
t.Log(ret)
|
||
}
|
||
|
||
// 获取用户属性
|
||
func TestIm_Push_GetUserAttrs(t *testing.T) {
|
||
ret, err := NewIM().Push().GetUserAttrs(test1)
|
||
if err != nil {
|
||
handleError(t, "push.GetUserAttrs", err)
|
||
}
|
||
|
||
t.Log(ret)
|
||
}
|
||
|
||
// 设置用户属性
|
||
func TestIm_Push_SetUserAttrs(t *testing.T) {
|
||
err := NewIM().Push().SetUserAttrs(map[string]map[string]interface{}{
|
||
test1: {
|
||
"age": 20,
|
||
"city": "成都",
|
||
},
|
||
})
|
||
if err != nil {
|
||
handleError(t, "push.SetUserAttrs", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 删除用户属性
|
||
func TestIm_Push_DeleteUserAttrs(t *testing.T) {
|
||
err := NewIM().Push().DeleteUserAttrs(map[string][]string{
|
||
test1: {"age", "city"},
|
||
})
|
||
if err != nil {
|
||
handleError(t, "push.DeleteUserAttrs", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 获取用户标签
|
||
func TestIm_Push_GetUserTags(t *testing.T) {
|
||
ret, err := NewIM().Push().GetUserTags(test1)
|
||
if err != nil {
|
||
handleError(t, "push.GetUserTags", err)
|
||
}
|
||
|
||
t.Log(ret)
|
||
}
|
||
|
||
// 添加用户标签
|
||
func TestIm_Push_AddUserTags(t *testing.T) {
|
||
err := NewIM().Push().AddUserTags(map[string][]string{
|
||
test1: {"chengdu"},
|
||
})
|
||
if err != nil {
|
||
handleError(t, "push.AddUserTags", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 删除用户标签
|
||
func TestIm_Push_DeleteUserTags(t *testing.T) {
|
||
err := NewIM().Push().DeleteUserTags(map[string][]string{
|
||
test1: {"chengdu"},
|
||
})
|
||
if err != nil {
|
||
handleError(t, "push.DeleteUserTags", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 删除用户所有标签
|
||
func TestIm_Push_DeleteUserAllTags(t *testing.T) {
|
||
err := NewIM().Push().DeleteUserAllTags(test1, test2)
|
||
if err != nil {
|
||
handleError(t, "push.DeleteUserAllTags", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 设置资料
|
||
func TestIm_Profile_SetProfile(t *testing.T) {
|
||
p := profile.NewProfile()
|
||
p.SetUserId(assistant)
|
||
p.SetNickname("小助手")
|
||
p.SetAvatar("http://www.qq.com")
|
||
p.SetGender(profile.GenderTypeMale)
|
||
p.SetLocation(1, 23, 7465, 92)
|
||
p.SetLanguage(20)
|
||
|
||
if err := NewIM().Profile().SetProfile(p); err != nil {
|
||
handleError(t, "profile.SetProfile", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 获取资料
|
||
func TestIm_Profile_GetProfile(t *testing.T) {
|
||
profiles, err := NewIM().Profile().GetProfiles([]string{
|
||
assistant,
|
||
}, []string{
|
||
profile.StandardAttrNickname,
|
||
profile.StandardAttrGender,
|
||
profile.StandardAttrBirthday,
|
||
profile.StandardAttrLocation,
|
||
profile.StandardAttrLanguage,
|
||
})
|
||
if err != nil {
|
||
handleError(t, "profile.GetProfiles", err)
|
||
}
|
||
|
||
for _, p := range profiles {
|
||
t.Log(p.GetUserId())
|
||
t.Log(p.GetNickname())
|
||
t.Log(p.GetGender())
|
||
t.Log(p.GetBirthday())
|
||
t.Log(p.GetLocation())
|
||
t.Log(p.GetLanguage())
|
||
}
|
||
}
|
||
|
||
// 拉取运营数据
|
||
func TestIm_Operation_GetOperationData(t *testing.T) {
|
||
data, err := NewIM().Operation().GetOperationData()
|
||
if err != nil {
|
||
handleError(t, "operation.GetOperationData", err)
|
||
}
|
||
|
||
t.Log(data[0].AppId)
|
||
t.Log(data[0].AppName)
|
||
t.Log(data[0].ActiveUserNum)
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 拉取运营数据
|
||
func TestIm_Operation_GetHistoryData(t *testing.T) {
|
||
files, err := NewIM().Operation().GetHistoryData(operation.ChatTypeC2C, time.Date(2021, time.November, 4, 14, 0, 0, 0, time.Local))
|
||
if err != nil {
|
||
handleError(t, "operation.GetHistoryData", err)
|
||
}
|
||
|
||
t.Log(files)
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 获取服务器IP地址
|
||
func TestIm_Operation_GetIpList(t *testing.T) {
|
||
ips, err := NewIM().Operation().GetIPList()
|
||
if err != nil {
|
||
handleError(t, "operation.GetIPList", err)
|
||
}
|
||
|
||
t.Log(ips)
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 设置全局禁言
|
||
func TestIm_Mute_SetNoSpeaking(t *testing.T) {
|
||
var privateMuteTime uint = 400
|
||
var groupMuteTime uint = 200
|
||
if err := NewIM().Mute().SetNoSpeaking(assistant, &privateMuteTime, &groupMuteTime); err != nil {
|
||
handleError(t, "mute.SetNoSpeaking", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 查询全局禁言
|
||
func TestIm_Mute_GetNoSpeaking(t *testing.T) {
|
||
ret, err := NewIM().Mute().GetNoSpeaking(assistant)
|
||
if err != nil {
|
||
handleError(t, "mute.GetNoSpeaking", err)
|
||
}
|
||
|
||
t.Log(ret.PrivateMuteTime)
|
||
t.Log(ret.GroupMuteTime)
|
||
}
|
||
|
||
// 添加好友
|
||
func TestIm_SNS_AddFriends(t *testing.T) {
|
||
var (
|
||
userIds = testUserIds()
|
||
friends = make([]*sns.Friend, 0, len(userIds))
|
||
friend *sns.Friend
|
||
)
|
||
|
||
for _, userId := range userIds {
|
||
friend = sns.NewFriend(userId)
|
||
friend.SetAddSource("android")
|
||
friends = append(friends, friend)
|
||
}
|
||
|
||
failUserIds, err := NewIM().Account().ImportAccounts(userIds...)
|
||
if err != nil {
|
||
handleError(t, "account.ImportAccounts", err)
|
||
}
|
||
|
||
t.Log(failUserIds)
|
||
|
||
results, err := NewIM().SNS().AddFriends(assistant, true, false, friends...)
|
||
if err != nil {
|
||
handleError(t, "sns.AddFriends", err)
|
||
}
|
||
|
||
t.Log(results)
|
||
}
|
||
|
||
// 导入好友
|
||
func TestIm_SNS_ImportFriends(t *testing.T) {
|
||
var (
|
||
userIds = testUserIds()
|
||
friends = make([]*sns.Friend, 0, len(userIds))
|
||
friend *sns.Friend
|
||
now = time.Now().Unix()
|
||
)
|
||
|
||
for _, userId := range userIds {
|
||
friend = sns.NewFriend(userId)
|
||
friend.SetAddSource("android")
|
||
friend.SetGroup("测试组")
|
||
friend.SetAddWording("测试一下")
|
||
friend.SetAddTime(now)
|
||
friend.SetRemark("测试好友")
|
||
friend.SetRemarkTime(now)
|
||
friends = append(friends, friend)
|
||
}
|
||
|
||
failUserIds, err := NewIM().Account().ImportAccounts(userIds...)
|
||
if err != nil {
|
||
handleError(t, "account.ImportAccounts", err)
|
||
}
|
||
|
||
t.Log(failUserIds)
|
||
|
||
results, err := NewIM().SNS().ImportFriends(assistant, friends...)
|
||
if err != nil {
|
||
handleError(t, "sns.ImportFriends", err)
|
||
}
|
||
|
||
t.Log(results)
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 更新单个好友
|
||
func TestIm_SNS_UpdateFriend(t *testing.T) {
|
||
friend := sns.NewFriend(test1)
|
||
friend.SetAddSource("android") // 忽略更新
|
||
friend.SetGroup("测试组")
|
||
friend.SetAddWording("更新单个好友") // 忽略更新
|
||
friend.SetAddTime(time.Now().Unix()) // 忽略更新
|
||
friend.SetRemark("更新单个好友")
|
||
friend.SetRemarkTime(time.Now().Unix()) // 忽略更新
|
||
|
||
err := NewIM().SNS().UpdateFriend(assistant, friend)
|
||
if err != nil {
|
||
handleError(t, "sns.UpdateFriend", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 更新好友
|
||
func TestIm_SNS_UpdateFriends(t *testing.T) {
|
||
var (
|
||
total = 10
|
||
friends = make([]*sns.Friend, 0, total)
|
||
friend *sns.Friend
|
||
now = time.Now().Unix()
|
||
)
|
||
|
||
for i := 0; i < total; i++ {
|
||
friend = sns.NewFriend(accountPrefix + strconv.Itoa(i))
|
||
friend.SetAddSource("android")
|
||
friend.SetGroup("测试组")
|
||
friend.SetAddWording("测试一下")
|
||
friend.SetAddTime(now)
|
||
friend.SetRemark("测试好友")
|
||
friend.SetRemarkTime(now)
|
||
friends = append(friends, friend)
|
||
}
|
||
|
||
results, err := NewIM().SNS().UpdateFriends(assistant, friends...)
|
||
if err != nil {
|
||
handleError(t, "sns.UpdateFriends", err)
|
||
}
|
||
|
||
t.Log(results)
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 删除好友
|
||
func TestIm_SNS_DeleteFriends(t *testing.T) {
|
||
var userIds = testUserIds()
|
||
|
||
results, err := NewIM().SNS().DeleteFriends(assistant, false, userIds...)
|
||
if err != nil {
|
||
handleError(t, "sns.DeleteFriends", err)
|
||
}
|
||
|
||
t.Log(results)
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 删除所有好友
|
||
func TestIm_SNS_DeleteAllFriends(t *testing.T) {
|
||
err := NewIM().SNS().DeleteAllFriends(assistant)
|
||
if err != nil {
|
||
handleError(t, "sns.DeleteAllFriends", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 校验好友
|
||
func TestIm_SNS_CheckFriends(t *testing.T) {
|
||
var userIds = testUserIds()
|
||
|
||
results, err := NewIM().SNS().CheckFriends(assistant, sns.CheckTypeSingle, userIds...)
|
||
if err != nil {
|
||
handleError(t, "sns.CheckFriends", err)
|
||
}
|
||
|
||
t.Log(results)
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 拉取指定好友
|
||
func TestIm_SNS_GetFriends(t *testing.T) {
|
||
var userIds = testUserIds()
|
||
|
||
friends, err := NewIM().SNS().GetFriends(assistant, []string{
|
||
sns.FriendAttrAddSource,
|
||
sns.FriendAttrRemark,
|
||
sns.FriendAttrRemarkTime, // 此Tag无效,GetFriends内部忽略了
|
||
sns.FriendAttrAddTime,
|
||
sns.FriendAttrAddWording,
|
||
sns.FriendAttrGroup,
|
||
sns.StandardAttrNickname,
|
||
sns.StandardAttrBirthday,
|
||
}, userIds...)
|
||
if err != nil {
|
||
handleError(t, "sns.GetFriends", err)
|
||
}
|
||
|
||
// 第一种获取方式
|
||
for _, friend := range friends {
|
||
if friend.IsValid() {
|
||
t.Log(friend.GetUserId())
|
||
t.Log(friend.GetAddSource())
|
||
t.Log(friend.GetRemark())
|
||
t.Log(friend.GetRemarkTime())
|
||
t.Log(friend.GetGroup())
|
||
t.Log(friend.GetNickname())
|
||
t.Log(friend.GetBirthday())
|
||
fmt.Println()
|
||
}
|
||
}
|
||
|
||
// 第二种获取方式
|
||
for _, friend := range friends {
|
||
if err = friend.GetError(); err != nil {
|
||
t.Log(fmt.Sprintf("获取账号%s失败:%s", friend.GetUserId(), err.Error()))
|
||
} else {
|
||
t.Log(friend.GetUserId())
|
||
t.Log(friend.GetAddSource())
|
||
t.Log(friend.GetRemark())
|
||
t.Log(friend.GetRemarkTime())
|
||
t.Log(friend.GetGroup())
|
||
t.Log(friend.GetNickname())
|
||
t.Log(friend.GetBirthday())
|
||
fmt.Println()
|
||
}
|
||
}
|
||
}
|
||
|
||
// 拉取好友
|
||
func TestIm_SNS_FetchFriends(t *testing.T) {
|
||
var (
|
||
err error
|
||
ret *sns.FetchFriendsRet
|
||
s = NewIM().SNS()
|
||
startIndex = 0
|
||
standardSequence = 0
|
||
customSequence = 0
|
||
)
|
||
|
||
for ret == nil || ret.HasMore {
|
||
ret, err = s.FetchFriends(assistant, startIndex, standardSequence, customSequence)
|
||
if err != nil {
|
||
handleError(t, "sns.FetchFriends", err)
|
||
}
|
||
|
||
startIndex = ret.StartIndex
|
||
standardSequence = ret.StandardSequence
|
||
customSequence = ret.CustomSequence
|
||
|
||
t.Log("下一个开始点:", ret.StartIndex)
|
||
t.Log("标准排序:", ret.StandardSequence)
|
||
t.Log("自定义排序:", ret.CustomSequence)
|
||
t.Log("好友总数:", ret.Total)
|
||
t.Log("是否还有数据:", ret.HasMore)
|
||
t.Log("好友列表:")
|
||
fmt.Println()
|
||
for _, friend := range ret.List {
|
||
if err = friend.GetError(); err != nil {
|
||
t.Log(fmt.Sprintf("获取账号%s失败:%s", friend.GetUserId(), err.Error()))
|
||
} else {
|
||
t.Log(friend.GetUserId())
|
||
t.Log(friend.GetAddSource())
|
||
t.Log(friend.GetRemark())
|
||
t.Log(friend.GetRemarkTime())
|
||
t.Log(friend.GetGroup())
|
||
t.Log(friend.GetNickname())
|
||
t.Log(friend.GetBirthday())
|
||
fmt.Println()
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// 续拉取好友
|
||
func TestIm_SNS_PullFriends(t *testing.T) {
|
||
err := NewIM().SNS().PullFriends(assistant, func(ret *sns.FetchFriendsRet) {
|
||
t.Log("下一个开始点:", ret.StartIndex)
|
||
t.Log("标准排序:", ret.StandardSequence)
|
||
t.Log("自定义排序:", ret.CustomSequence)
|
||
t.Log("好友总数:", ret.Total)
|
||
t.Log("是否还有数据:", ret.HasMore)
|
||
t.Log("好友列表:")
|
||
fmt.Println()
|
||
for _, friend := range ret.List {
|
||
if err := friend.GetError(); err != nil {
|
||
t.Log(fmt.Sprintf("获取账号%s失败:%s", friend.GetUserId(), err.Error()))
|
||
} else {
|
||
t.Log(friend.GetUserId())
|
||
t.Log(friend.GetAddSource())
|
||
t.Log(friend.GetRemark())
|
||
t.Log(friend.GetRemarkTime())
|
||
t.Log(friend.GetGroup())
|
||
t.Log(friend.GetNickname())
|
||
t.Log(friend.GetBirthday())
|
||
fmt.Println()
|
||
}
|
||
}
|
||
})
|
||
if err != nil {
|
||
handleError(t, "sns.PullFriends", err)
|
||
}
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 添加黑名单
|
||
func TestIm_SNS_AddBlacklist(t *testing.T) {
|
||
var userIds = testUserIds()
|
||
|
||
results, err := NewIM().SNS().AddBlacklist(assistant, userIds...)
|
||
if err != nil {
|
||
handleError(t, "sns.AddBlacklist", err)
|
||
}
|
||
|
||
t.Log(results)
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 删除黑名单
|
||
func TestIm_SNS_DeleteBlacklist(t *testing.T) {
|
||
var userIds = testUserIds()
|
||
|
||
results, err := NewIM().SNS().DeleteBlacklist(assistant, userIds...)
|
||
if err != nil {
|
||
handleError(t, "sns.DeleteBlacklist", err)
|
||
}
|
||
|
||
t.Log(results)
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 拉取黑名单
|
||
func TestIm_SNS_FetchBlacklist(t *testing.T) {
|
||
var (
|
||
err error
|
||
ret *sns.FetchBlacklistRet
|
||
s = NewIM().SNS()
|
||
startIndex = 0
|
||
maxLimited = 2
|
||
standardSequence = 0
|
||
)
|
||
|
||
for ret == nil || ret.HasMore {
|
||
ret, err = s.FetchBlacklist(assistant, startIndex, maxLimited, standardSequence)
|
||
if err != nil {
|
||
handleError(t, "sns.FetchBlacklist", err)
|
||
}
|
||
|
||
startIndex = ret.StartIndex
|
||
standardSequence = ret.StandardSequence
|
||
|
||
t.Log("下一个开始点:", startIndex)
|
||
t.Log("标准排序:", standardSequence)
|
||
t.Log("黑名单列表:")
|
||
fmt.Println()
|
||
for _, blacklist := range ret.List {
|
||
t.Log(blacklist.UserId)
|
||
t.Log(blacklist.Time)
|
||
fmt.Println()
|
||
}
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 续拉取黑名单
|
||
func TestIm_SNS_PullBlacklist(t *testing.T) {
|
||
err := NewIM().SNS().PullBlacklist(assistant, 2, func(ret *sns.FetchBlacklistRet) {
|
||
t.Log("下一个开始点:", ret.StartIndex)
|
||
t.Log("标准排序:", ret.StandardSequence)
|
||
t.Log("黑名单列表:")
|
||
fmt.Println()
|
||
for _, blacklist := range ret.List {
|
||
t.Log(blacklist.UserId)
|
||
t.Log(blacklist.Time)
|
||
fmt.Println()
|
||
}
|
||
})
|
||
if err != nil {
|
||
handleError(t, "sns.PullBlacklist", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 校验黑名单
|
||
func TestIm_SNS_CheckBlacklist(t *testing.T) {
|
||
var userIds = testUserIds()
|
||
|
||
results, err := NewIM().SNS().CheckBlacklist(assistant, sns.BlacklistCheckTypeSingle, userIds...)
|
||
if err != nil {
|
||
handleError(t, "sns.CheckBlacklist", err)
|
||
}
|
||
|
||
for _, result := range results {
|
||
if result.ResultCode == 0 {
|
||
t.Log(result.UserId)
|
||
t.Log(result.Relation)
|
||
switch result.Relation {
|
||
case sns.BlackCheckResultTypeNO:
|
||
t.Log("From_Account 的黑名单中没有 To_Account,但无法确定 To_Account 的黑名单中是否有 From_Account")
|
||
case sns.BlackCheckResultTypeAWithB:
|
||
t.Log("From_Account 的黑名单中有 To_Account,但无法确定 To_Account 的黑名单中是否有 From_Account")
|
||
}
|
||
} else {
|
||
t.Log(result.ResultCode)
|
||
t.Log(result.ResultInfo)
|
||
}
|
||
fmt.Println()
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 添加分组
|
||
func TestIm_SNS_AddGroups(t *testing.T) {
|
||
var userIds = testUserIds()
|
||
|
||
_, results, err := NewIM().SNS().AddGroups("assistant", []string{
|
||
"测试5",
|
||
"测试6",
|
||
}, userIds)
|
||
if err != nil {
|
||
handleError(t, "sns.AddGroups", err)
|
||
}
|
||
|
||
t.Log(results)
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 删除分组
|
||
func TestIm_SNS_DeleteGroups(t *testing.T) {
|
||
_, err := NewIM().SNS().DeleteGroups("assistant", "测试3", "测试4")
|
||
if err != nil {
|
||
handleError(t, "sns.DeleteGroups", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 拉取分组
|
||
func TestIm_SNS_GetGroups(t *testing.T) {
|
||
var (
|
||
err error
|
||
lastSequence int
|
||
results []*sns.GroupResult
|
||
)
|
||
|
||
lastSequence, results, err = NewIM().SNS().GetGroups("assistant", lastSequence, true, "测试1", "测试2")
|
||
if err != nil {
|
||
handleError(t, "sns.GetGroups", err)
|
||
}
|
||
|
||
t.Log(results)
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 发送单聊消息
|
||
func TestIm_Private_SendMessage(t *testing.T) {
|
||
message := private.NewMessage()
|
||
message.SetSender(assistant)
|
||
message.SetReceivers(test1)
|
||
message.SetLifeTime(30000)
|
||
message.SetTimestamp(time.Now().Unix())
|
||
message.SetContent(private.MsgTextContent{
|
||
Text: "Hello world",
|
||
})
|
||
message.OfflinePush().SetTitle("你好腾讯IM")
|
||
message.OfflinePush().SetDesc("你好腾讯IM,我来了~~~")
|
||
message.OfflinePush().SetPushFlag(private.PushFlagYes)
|
||
message.OfflinePush().SetExt(map[string]interface{}{
|
||
"url": "http://www.tencent.com",
|
||
})
|
||
message.OfflinePush().SetAndroidExtAsHuaweiIntentParam(private.HuaweiIntentParamIntent)
|
||
message.OfflinePush().SetApnsBadgeMode(private.BadgeModeNormal)
|
||
|
||
ret, err := NewIM().Private().SendMessage(message)
|
||
if err != nil {
|
||
handleError(t, "private.SendMessage", err)
|
||
}
|
||
|
||
t.Log(ret.MsgKey)
|
||
t.Log(ret.MsgTime)
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 批量发单聊消息
|
||
func TestIm_Private_SendMessages(t *testing.T) {
|
||
message := private.NewMessage()
|
||
message.SetSender("assistant")
|
||
message.AddReceivers("test1", "test2")
|
||
message.SetContent(private.MsgTextContent{
|
||
Text: "Hello world",
|
||
})
|
||
|
||
ret, err := NewIM().Private().SendMessages(message)
|
||
if err != nil {
|
||
handleError(t, "private.SendMessages", err)
|
||
}
|
||
|
||
t.Log(ret.MsgKey)
|
||
t.Log(ret.Errors)
|
||
}
|
||
|
||
// 导入单聊消息
|
||
func TestIm_Private_ImportMessage(t *testing.T) {
|
||
message := private.NewMessage()
|
||
message.SetSender("assistant")
|
||
message.SetReceivers("test1")
|
||
message.SetTimestamp(time.Now().Unix())
|
||
message.SetSyncOtherMachine(private.SyncOtherMachineYes)
|
||
message.SetContent(private.MsgTextContent{
|
||
Text: "Hello world",
|
||
})
|
||
|
||
err := NewIM().Private().ImportMessage(message)
|
||
if err != nil {
|
||
handleError(t, "private.ImportMessage", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 查询单聊消息
|
||
func TestIm_Private_FetchMessages(t *testing.T) {
|
||
var (
|
||
err error
|
||
p = NewIM().Private()
|
||
ret *private.FetchMessagesRet
|
||
arg = &private.FetchMessagesArg{
|
||
FromUserId: test1,
|
||
ToUserId: assistant,
|
||
MaxLimited: 5,
|
||
MinTime: time.Now().Add(-20 * time.Hour).Unix(),
|
||
MaxTime: time.Now().Unix(),
|
||
}
|
||
)
|
||
|
||
for ret == nil || ret.HasMore {
|
||
ret, err = p.FetchMessages(arg)
|
||
if err != nil {
|
||
handleError(t, "private.FetchMessages", err)
|
||
}
|
||
|
||
if ret.HasMore {
|
||
arg.LastMsgKey = ret.LastMsgKey
|
||
arg.MaxTime = ret.LastMsgTime
|
||
}
|
||
|
||
t.Log(ret.HasMore)
|
||
t.Log(ret.LastMsgKey)
|
||
t.Log(ret.LastMsgTime)
|
||
t.Log(ret.Count)
|
||
t.Log(ret.List)
|
||
fmt.Println()
|
||
}
|
||
}
|
||
|
||
// 分页拉取所有消息
|
||
func TestIm_Private_PullMessages(t *testing.T) {
|
||
err := NewIM().Private().PullMessages(&private.PullMessagesArg{
|
||
FromUserId: "test1",
|
||
ToUserId: "assistant",
|
||
MaxLimited: 5,
|
||
MinTime: time.Now().Add(-30 * time.Hour).Unix(),
|
||
MaxTime: time.Now().Unix(),
|
||
}, func(ret *private.FetchMessagesRet) {
|
||
t.Log(ret.HasMore)
|
||
t.Log(ret.LastMsgKey)
|
||
t.Log(ret.LastMsgTime)
|
||
t.Log(ret.Count)
|
||
t.Log(ret.List)
|
||
fmt.Println()
|
||
})
|
||
if err != nil {
|
||
handleError(t, "private.PullMessages", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 撤销消息
|
||
func TestIm_Private_RevokeMessage(t *testing.T) {
|
||
err := NewIM().Private().RevokeMessage(assistant, test1, "31906_833502_1572869830")
|
||
if err != nil {
|
||
handleError(t, "private.RevokeMessage", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 设置单聊消息已读
|
||
func TestIm_Private_SetMessageRead(t *testing.T) {
|
||
err := NewIM().Private().SetMessageRead(assistant, test1)
|
||
if err != nil {
|
||
handleError(t, "private.SetMessageRead", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 获取未读消息数
|
||
func TestIm_Private_GetUnreadMessageNum(t *testing.T) {
|
||
ret, err := NewIM().Private().GetUnreadMessageNum(assistant, test1, test2)
|
||
if err != nil {
|
||
handleError(t, "private.GetUnreadMessageNum", err)
|
||
}
|
||
|
||
t.Log(ret.Total)
|
||
t.Log(ret.Results)
|
||
t.Log(ret.Errors)
|
||
}
|
||
|
||
// 创建群组
|
||
func TestIm_Group_CreateGroup(t *testing.T) {
|
||
g := group.NewGroup()
|
||
g.SetName("测试群2")
|
||
g.SetGroupType(group.TypePrivate)
|
||
g.SetMaxMemberNum(30)
|
||
g.SetAvatar("http://www.baidu.com")
|
||
g.SetGroupId("test_group2")
|
||
g.SetIntroduction("这是一个测试群")
|
||
g.SetNotification("这是一个测试群公告")
|
||
|
||
for i := 1; i < 10; i++ {
|
||
member := group.NewMember(accountPrefix + strconv.Itoa(i))
|
||
member.SetJoinTime(time.Now())
|
||
g.AddMembers(member)
|
||
}
|
||
|
||
groupId, err := NewIM().Group().CreateGroup(g)
|
||
if err != nil {
|
||
handleError(t, "group.CreateGroup", err)
|
||
}
|
||
|
||
t.Log(groupId)
|
||
}
|
||
|
||
// 解散单个群
|
||
func TestIm_Group_DestroyGroup(t *testing.T) {
|
||
err := NewIM().Group().DestroyGroup("test_group2")
|
||
if err != nil {
|
||
handleError(t, "group.DestroyGroup", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 获取单个群详细资料
|
||
func TestIm_Group_GetGroup(t *testing.T) {
|
||
g, err := NewIM().Group().GetGroup("test_group2")
|
||
if err != nil {
|
||
handleError(t, "group.GetGroup", err)
|
||
}
|
||
|
||
if g != nil {
|
||
t.Log(g.GetGroupId())
|
||
t.Log(g.GetName())
|
||
t.Log(g.GetGroupType())
|
||
t.Log(g.GetOwner())
|
||
t.Log(g.GetAvatar())
|
||
}
|
||
}
|
||
|
||
// 获取多个群详细资料
|
||
func TestIm_Group_GetGroups(t *testing.T) {
|
||
groups, err := NewIM().Group().GetGroups([]string{
|
||
"test_group2",
|
||
})
|
||
if err != nil {
|
||
handleError(t, "group.GetGroups", err)
|
||
}
|
||
|
||
for _, g := range groups {
|
||
if err = g.GetError(); err != nil {
|
||
t.Error(err)
|
||
} else {
|
||
t.Log(g.GetGroupId())
|
||
t.Log(g.GetName())
|
||
t.Log(g.GetGroupType())
|
||
t.Log(g.GetOwner())
|
||
t.Log(g.GetAvatar())
|
||
}
|
||
}
|
||
}
|
||
|
||
// 添加群成员
|
||
func TestIm_Group_AddGroupMembers(t *testing.T) {
|
||
results, err := NewIM().Group().AddMembers("test_group2", []string{
|
||
test1,
|
||
test2,
|
||
}, true)
|
||
if err != nil {
|
||
handleError(t, "group.AddMembers", err)
|
||
}
|
||
|
||
t.Log(results)
|
||
}
|
||
|
||
// 删除群成员
|
||
func TestIm_Group_DeleteGroupMembers(t *testing.T) {
|
||
err := NewIM().Group().DeleteMembers("test_group2", []string{
|
||
test1,
|
||
test2,
|
||
test3,
|
||
}, "测试删除", true)
|
||
if err != nil {
|
||
handleError(t, "group.DeleteMembers", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 转让群组
|
||
func TestIm_Group_ChangeGroupOwner(t *testing.T) {
|
||
err := NewIM().Group().ChangeGroupOwner("test_group2", test1)
|
||
if err != nil {
|
||
handleError(t, "group.ChangeGroupOwner", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 修改群基础资料
|
||
func TestIm_Group_UpdateGroup(t *testing.T) {
|
||
g := group.NewGroup()
|
||
g.SetName("测试群1")
|
||
g.SetGroupType(group.TypePublic)
|
||
g.SetMaxMemberNum(30)
|
||
g.SetAvatar("http://www.baidu.com")
|
||
g.SetGroupId("test_group2")
|
||
g.SetIntroduction("这是一个测试群")
|
||
g.SetNotification("这是一个测试群公告")
|
||
|
||
err := NewIM().Group().UpdateGroup(g)
|
||
if err != nil {
|
||
handleError(t, "group.UpdateGroup", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 查询用户在群组中的身份
|
||
func TestIm_Group_GetRolesInGroup(t *testing.T) {
|
||
ret, err := NewIM().Group().GetRolesInGroup("test_group2", []string{
|
||
test1,
|
||
test2,
|
||
test3,
|
||
})
|
||
if err != nil {
|
||
handleError(t, "group.GetRolesInGroup", err)
|
||
}
|
||
|
||
t.Log(ret)
|
||
}
|
||
|
||
// 拉取群成员详细资料
|
||
func TestIm_Group_FetchGroupMembers(t *testing.T) {
|
||
ret, err := NewIM().Group().FetchMembers("test_group1", 3, 2)
|
||
if err != nil {
|
||
handleError(t, "group.FetchMembers", err)
|
||
}
|
||
|
||
t.Log(ret.HasMore)
|
||
t.Log(ret.Total)
|
||
|
||
for _, member := range ret.List {
|
||
t.Log(member.GetUserId())
|
||
}
|
||
}
|
||
|
||
// 拉取群成员详细资料
|
||
func TestIm_Group_PullGroupMembers(t *testing.T) {
|
||
err := NewIM().Group().PullMembers(&group.PullMembersArg{
|
||
GroupId: "test_group2",
|
||
Limit: 3,
|
||
}, func(ret *group.FetchMembersRet) {
|
||
t.Log(ret.HasMore)
|
||
t.Log(ret.Total)
|
||
|
||
for _, member := range ret.List {
|
||
t.Log(member.GetUserId())
|
||
}
|
||
})
|
||
if err != nil {
|
||
handleError(t, "group.PullMembers", err)
|
||
}
|
||
}
|
||
|
||
// 拉取App中的所有群组
|
||
func TestIm_Group_FetchGroupIds(t *testing.T) {
|
||
ret, err := NewIM().Group().FetchGroupIds(3, 7964653962)
|
||
if err != nil {
|
||
handleError(t, "group.FetchGroupIds", err)
|
||
}
|
||
|
||
t.Log(ret.Total)
|
||
t.Log(ret.Next)
|
||
t.Log(ret.HasMore)
|
||
t.Log(ret.List)
|
||
}
|
||
|
||
// 拉取App中的所有群组
|
||
func TestIm_Group_FetchGroups(t *testing.T) {
|
||
ret, err := NewIM().Group().FetchGroups(50, 7964653962)
|
||
if err != nil {
|
||
handleError(t, "group.FetchGroups", err)
|
||
}
|
||
|
||
t.Log(ret.Total)
|
||
t.Log(ret.Next)
|
||
t.Log(ret.HasMore)
|
||
|
||
for _, g := range ret.List {
|
||
t.Log(g.GetGroupId())
|
||
t.Log(g.GetOwner())
|
||
t.Log(g.GetName())
|
||
}
|
||
}
|
||
|
||
// 续拉取App中的所有群组
|
||
func TestIm_Group_PullGroups(t *testing.T) {
|
||
err := NewIM().Group().PullGroups(&group.PullGroupsArg{
|
||
Limit: 50,
|
||
}, func(ret *group.FetchGroupsRet) {
|
||
t.Log(ret.Total)
|
||
t.Log(ret.Next)
|
||
t.Log(ret.HasMore)
|
||
|
||
for _, g := range ret.List {
|
||
t.Log(g.GetGroupId())
|
||
t.Log(g.GetOwner())
|
||
t.Log(g.GetName())
|
||
}
|
||
})
|
||
if err != nil {
|
||
handleError(t, "group.PullGroups", err)
|
||
}
|
||
}
|
||
|
||
// 修改群成员资料
|
||
func TestIm_Group_UpdateGroupMember(t *testing.T) {
|
||
member := group.NewMember(test1)
|
||
member.SetRole("Admin")
|
||
member.SetNameCard("这是一个测试名片信息")
|
||
member.SetMsgFlag(group.MsgFlagAcceptAndNotify)
|
||
|
||
err := NewIM().Group().UpdateMember("test_group2", member)
|
||
if err != nil {
|
||
handleError(t, "group.UpdateMember", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 拉取用户所加入的群组
|
||
func TestIm_Group_FetchMemberGroups(t *testing.T) {
|
||
ret, err := NewIM().Group().FetchMemberGroups(&group.FetchMemberGroupsArg{
|
||
UserId: test1,
|
||
Limit: 3,
|
||
Offset: 0,
|
||
IsWithLiveRoomGroups: true,
|
||
IsWithNoActiveGroups: true,
|
||
})
|
||
if err != nil {
|
||
handleError(t, "group.FetchMemberGroups", err)
|
||
}
|
||
|
||
t.Log(ret.Total)
|
||
t.Log(ret.HasMore)
|
||
t.Log(ret.List)
|
||
}
|
||
|
||
// 续拉取用户所加入的群组
|
||
func TestIm_Group_PullMemberGroups(t *testing.T) {
|
||
err := NewIM().Group().PullMemberGroups(&group.PullMemberGroupsArg{
|
||
UserId: test1,
|
||
Limit: 3,
|
||
IsWithLiveRoomGroups: true,
|
||
IsWithNoActiveGroups: true,
|
||
}, func(ret *group.FetchMemberGroupsRet) {
|
||
t.Log(ret.Total)
|
||
t.Log(ret.HasMore)
|
||
t.Log(ret.List)
|
||
})
|
||
if err != nil {
|
||
handleError(t, "group.PullMemberGroups", err)
|
||
}
|
||
}
|
||
|
||
// 批量禁言
|
||
func TestIm_Group_ForbidSendMessage(t *testing.T) {
|
||
err := NewIM().Group().ForbidSendMessage("test_group1", []string{
|
||
test1,
|
||
}, 1000)
|
||
if err != nil {
|
||
handleError(t, "group.ForbidSendMessage", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 取消禁言
|
||
func TestIm_Group_AllowSendMessage(t *testing.T) {
|
||
err := NewIM().Group().AllowSendMessage("test_group2", []string{
|
||
test1,
|
||
test2,
|
||
})
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 获取被禁言群成员列表
|
||
func TestIm_Group_GetShuttedUpMembers(t *testing.T) {
|
||
shuttedUps, err := NewIM().Group().GetShuttedUpMembers("test_group2")
|
||
if err != nil {
|
||
handleError(t, "group.GetShuttedUpMembers", err)
|
||
}
|
||
|
||
t.Log(shuttedUps)
|
||
}
|
||
|
||
// 撤回单条群消息
|
||
func TestIm_Group_RevokeMessage(t *testing.T) {
|
||
err := NewIM().Group().RevokeMessage("test_group2", 100)
|
||
if err != nil {
|
||
handleError(t, "group.RevokeMessage", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 撤回多条群消息
|
||
func TestIm_Group_RevokeMessages(t *testing.T) {
|
||
results, err := NewIM().Group().RevokeMessages("test_group2", 100)
|
||
if err != nil {
|
||
handleError(t, "group.RevokeMessages", err)
|
||
}
|
||
|
||
t.Log(results)
|
||
}
|
||
|
||
// 设置成员未读消息计数
|
||
func TestIm_Group_SetMemberUnreadMsgNum(t *testing.T) {
|
||
err := NewIM().Group().SetMemberUnreadMsgNum("test_group2", test1, 100)
|
||
if err != nil {
|
||
handleError(t, "group.SetMemberUnreadMsgNum", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 撤回指定用户发送的消息
|
||
func TestIm_Group_RevokeMemberMessages(t *testing.T) {
|
||
err := NewIM().Group().RevokeMemberMessages("test_group2", test1)
|
||
if err != nil {
|
||
handleError(t, "group.RevokeMemberMessages", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 在群组中发送普通消息
|
||
func TestIm_Group_SendMessage(t *testing.T) {
|
||
message := group.NewMessage()
|
||
message.SetSender(test1)
|
||
message.SetNoLastMsg()
|
||
message.SetPriority("first")
|
||
// message.SetOnlineOnlyFlag(group.OnlineOnlyFlagYes)
|
||
message.SetContent(private.MsgTextContent{
|
||
Text: "Hello world",
|
||
})
|
||
message.OfflinePush().SetTitle("你好腾讯IM")
|
||
message.OfflinePush().SetDesc("你好腾讯IM,我来了~~~")
|
||
message.OfflinePush().SetPushFlag(private.PushFlagYes)
|
||
message.OfflinePush().SetExt(map[string]interface{}{
|
||
"url": "http://www.tencent.com",
|
||
})
|
||
message.OfflinePush().SetAndroidExtAsHuaweiIntentParam(private.HuaweiIntentParamIntent)
|
||
message.OfflinePush().SetApnsBadgeMode(private.BadgeModeNormal)
|
||
message.AtAllMembers()
|
||
message.AtMembers(test2)
|
||
message.ClearAtMembers()
|
||
|
||
ret, err := NewIM().Group().SendMessage("test_group2", message)
|
||
if err != nil {
|
||
handleError(t, "group.SendMessage", err)
|
||
}
|
||
|
||
t.Log(ret.MsgSeq)
|
||
t.Log(ret.MsgTime)
|
||
}
|
||
|
||
// 在群组中发送普通消息
|
||
func TestIm_Group_SendNotification(t *testing.T) {
|
||
err := NewIM().Group().SendNotification("test_group2", "Hello welcome to the test group", test1)
|
||
if err != nil {
|
||
handleError(t, "group.SendNotification", err)
|
||
}
|
||
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 导入群基础资料
|
||
func TestIm_Group_ImportGroup(t *testing.T) {
|
||
g := group.NewGroup()
|
||
g.SetName("测试群1")
|
||
g.SetGroupType(group.TypePublic)
|
||
g.SetMaxMemberNum(30)
|
||
g.SetAvatar("http://www.baidu.com")
|
||
g.SetIntroduction("这是一个测试群")
|
||
g.SetNotification("这是一个测试群公告")
|
||
|
||
groupId, err := NewIM().Group().ImportGroup(g)
|
||
if err != nil {
|
||
handleError(t, "group.ImportGroup", err)
|
||
}
|
||
|
||
t.Log(groupId)
|
||
}
|
||
|
||
// 导入群消息
|
||
func TestIm_Group_ImportMessages(t *testing.T) {
|
||
message := group.NewMessage()
|
||
message.SetSender(test1)
|
||
message.SetSendTime(time.Now().Unix())
|
||
message.SetRandom(rand.Uint32())
|
||
message.SetContent(private.MsgTextContent{
|
||
Text: "Hello world",
|
||
})
|
||
|
||
results, err := NewIM().Group().ImportMessages("test_group2", message)
|
||
if err != nil {
|
||
handleError(t, "group.ImportMessages", err)
|
||
}
|
||
|
||
t.Log(results)
|
||
}
|
||
|
||
// 导入多个群成员
|
||
func TestIm_Group_ImportMembers(t *testing.T) {
|
||
members := make([]*group.Member, 0)
|
||
for i := 1; i < 10; i++ {
|
||
member := group.NewMember()
|
||
member.SetUserId("test" + strconv.Itoa(i))
|
||
member.SetRole("Admin")
|
||
member.SetUnreadMsgNum(10)
|
||
member.SetJoinTime(time.Now())
|
||
members = append(members, member)
|
||
}
|
||
|
||
results, err := NewIM().Group().ImportMembers("test_group2", members...)
|
||
if err != nil {
|
||
handleError(t, "group.ImportMembers", err)
|
||
}
|
||
|
||
t.Log(results)
|
||
}
|
||
|
||
// 拉取群历史消息
|
||
func TestIm_Group_FetchMessages(t *testing.T) {
|
||
ret, err := NewIM().Group().FetchMessages("test_group2", 5)
|
||
if err != nil {
|
||
handleError(t, "group.FetchMessages", err)
|
||
}
|
||
|
||
t.Log(ret)
|
||
}
|
||
|
||
// 续拉取群历史消息
|
||
func TestIm_Group_PullMessages(t *testing.T) {
|
||
err := NewIM().Group().PullMessages("test_group2", 5, func(ret *group.FetchMessagesRet) {
|
||
t.Log(ret)
|
||
})
|
||
if err != nil {
|
||
handleError(t, "group.PullMessages", err)
|
||
}
|
||
}
|
||
|
||
// 拉取会话列表
|
||
func TestIm_RecentContact_FetchSessions(t *testing.T) {
|
||
ret, err := NewIM().RecentContact().FetchSessions(&recentcontact.FetchSessionsArg{
|
||
UserId: assistant,
|
||
})
|
||
if err != nil {
|
||
handleError(t, "recentcontact.FetchSessions", err)
|
||
}
|
||
|
||
t.Log(ret)
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 拉取会话列表
|
||
func TestIm_RecentContact_PullSessions(t *testing.T) {
|
||
err := NewIM().RecentContact().PullSessions(&recentcontact.PullSessionsArg{
|
||
UserId: assistant,
|
||
}, func(ret *recentcontact.FetchSessionsRet) {
|
||
t.Log(ret)
|
||
})
|
||
if err != nil {
|
||
handleError(t, "recentcontact.PullSessions", err)
|
||
}
|
||
t.Log("Success")
|
||
}
|
||
|
||
// 删除单个会话
|
||
func TestIm_RecentContact_DeleteSession(t *testing.T) {
|
||
err := NewIM().RecentContact().DeleteSession(assistant, test1, recentcontact.SessionTypeC2C, true)
|
||
if err != nil {
|
||
handleError(t, "recentcontact.DeleteSession", err)
|
||
}
|
||
t.Log("Success")
|
||
}
|