databag/net/server/internal/ucProfileUpdate_test.go

115 lines
5.6 KiB
Go
Raw Normal View History

2022-02-03 19:18:50 +00:00
package databag
import (
2022-07-22 19:28:14 +00:00
"bytes"
"encoding/base64"
"github.com/stretchr/testify/assert"
"testing"
2022-02-03 19:18:50 +00:00
)
2022-02-17 08:42:55 +00:00
func TestProfileUpdate(t *testing.T) {
2022-07-22 19:28:14 +00:00
param := map[string]string{}
var msg DataMessage
var card Card
var bProfileRev int64
var bCardRev int64
var cProfileRev int64
var cCardRev int64
var profile Profile
var data []byte
var img []byte
var hdr map[string][]string
2022-02-09 07:54:09 +00:00
2022-07-22 19:28:14 +00:00
// setup testing group
set, err := AddTestGroup("updateprofile")
assert.NoError(t, err)
2022-02-08 20:30:57 +00:00
2022-07-22 19:28:14 +00:00
// setup testing group
_, ret := AddTestGroup("updateprofile")
assert.Error(t, ret)
2022-02-09 07:54:09 +00:00
2022-07-22 19:28:14 +00:00
// reset revision
bCardRev = GetTestRevision(set.B.Revisions).Card
cCardRev = GetTestRevision(set.C.Revisions).Card
param["cardID"] = set.B.A.CardID
assert.NoError(t, APITestMsg(GetCard, "GET", "/contact/cards/{cardID}",
&param, nil,
APPTokenAgent, set.B.Token, &card, nil))
bProfileRev = card.Data.NotifiedProfile
param["cardID"] = set.C.A.CardID
assert.NoError(t, APITestMsg(GetCard, "GET", "/contact/cards/{cardID}",
&param, nil,
APPTokenAgent, set.C.Token, &card, nil))
cProfileRev = card.Data.NotifiedProfile
2022-02-09 07:54:09 +00:00
2022-07-22 19:28:14 +00:00
// update A profile
profileData := &ProfileData{
Name: "Namer",
Location: "San Diago",
Description: "databaggerr",
}
assert.NoError(t, APITestMsg(SetProfile, "PUT", "/profile/data",
nil, profileData,
APPTokenAgent, set.A.Token, &profile, nil))
assert.Equal(t, "databaggerr", profile.Description)
2022-02-09 07:54:09 +00:00
2022-07-22 19:28:14 +00:00
// recv websocket event
assert.NotEqual(t, bCardRev, GetTestRevision(set.B.Revisions).Card)
assert.NotEqual(t, cCardRev, GetTestRevision(set.C.Revisions).Card)
2022-02-09 07:54:09 +00:00
2022-07-22 19:28:14 +00:00
// check B notified
param["cardID"] = set.B.A.CardID
assert.NoError(t, APITestMsg(GetCard, "GET", "/contact/cards/{cardID}",
&param, nil,
APPTokenAgent, set.B.Token, &card, nil))
assert.NotEqual(t, bProfileRev, card.Data.NotifiedProfile)
assert.NotEqual(t, card.Data.ProfileRevision, card.Data.NotifiedProfile)
2022-02-09 07:54:09 +00:00
2022-07-22 19:28:14 +00:00
// check C notified
param["cardID"] = set.C.A.CardID
assert.NoError(t, APITestMsg(GetCard, "GET", "/contact/cards/{cardID}",
&param, nil,
APPTokenAgent, set.C.Token, &card, nil))
assert.NotEqual(t, cProfileRev, card.Data.NotifiedProfile)
assert.NotEqual(t, card.Data.ProfileRevision, card.Data.NotifiedProfile)
2022-02-09 07:54:09 +00:00
2022-07-22 19:28:14 +00:00
// sync profile
assert.NoError(t, APITestMsg(GetProfileMessage, "GET", "/profile/message",
nil, nil,
APPTokenContact, set.B.A.Token, &msg, nil))
assert.NoError(t, APITestMsg(AddCard, "POST", "/contact/cards",
nil, &msg,
APPTokenAgent, set.B.Token, &card, nil))
assert.Equal(t, card.ID, set.B.A.CardID)
assert.Equal(t, card.Data.ProfileRevision, card.Data.NotifiedProfile)
assert.Equal(t, card.Data.CardProfile.Name, "Namer")
2022-02-09 07:54:09 +00:00
2022-07-22 19:28:14 +00:00
// sync profile
assert.NoError(t, APITestMsg(GetProfileMessage, "GET", "/profile/message",
nil, nil,
APPTokenContact, set.C.A.Token, &msg, nil))
assert.NoError(t, APITestMsg(AddCard, "POST", "/contact/cards",
nil, &msg,
APPTokenAgent, set.C.Token, &card, nil))
assert.Equal(t, card.ID, set.C.A.CardID)
assert.Equal(t, card.Data.ProfileRevision, card.Data.NotifiedProfile)
assert.Equal(t, card.Data.CardProfile.Name, "Namer")
2022-02-09 07:54:09 +00:00
2022-07-22 19:28:14 +00:00
// set profile image
image := "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"
assert.NoError(t, APITestMsg(SetProfileImage, "PUT", "/profile/image",
nil, image,
APPTokenAgent, set.A.Token, &profile, nil))
2022-02-09 07:54:09 +00:00
2022-07-22 19:28:14 +00:00
// retrieve profile image
data, hdr, err = APITestData(GetProfileImage, "GET", "/profile/image?agent="+set.A.Token, nil, nil,
APPTokenAgent, set.A.Token, 0, 0)
assert.NoError(t, err)
2022-02-09 07:54:09 +00:00
2022-07-22 19:28:14 +00:00
// compare retrieved image
assert.Equal(t, "image/png", hdr["Content-Type"][0])
img, err = base64.StdEncoding.DecodeString(image)
assert.NoError(t, err)
assert.Zero(t, bytes.Compare(img, data))
2022-02-03 19:18:50 +00:00
}