databag/net/server/internal/ucGroupContact_test.go
2022-01-27 11:45:01 -08:00

178 lines
5.1 KiB
Go

package databag
import (
"testing"
"github.com/gorilla/mux"
"github.com/gorilla/websocket"
"github.com/stretchr/testify/assert"
)
func TestGroupContact(t *testing.T) {
var subject *Subject
var group Group
var groups []Group
var groupRevision int64
var cardRevision int64
var revision Revision
var vars map[string]string
var cardData CardData
var contactRevision int64
var card Card
var contactCardRevision int64
var wsA *websocket.Conn
var wsB *websocket.Conn
var err error
// connect contacts
_, a, _ := AddTestAccount("groupcontact0")
_, b, _ := AddTestAccount("groupcontact1")
aCard, _ := AddTestCard(a, b)
bCard, _ := AddTestCard(b, a)
OpenTestCard(a, aCard)
OpenTestCard(b, bCard)
// app connects websocket
wsA, err = StatusConnection(a, &revision);
assert.NoError(t, err)
groupRevision = revision.Group
wsB, err = StatusConnection(b, &revision);
assert.NoError(t, err)
contactRevision = revision.Card
// add group to conatact 0
subject = &Subject{
DataType: "imagroup",
Data: "group data with name and logo",
}
r, w, _ := NewRequest("POST", "/share/groups", subject)
SetBearerAuth(r, a)
AddGroup(w, r)
assert.NoError(t, ReadResponse(w, &group))
// receive revision
err = StatusRevision(wsA, &revision)
assert.NoError(t, err)
assert.NotEqual(t, groupRevision, revision.Group)
cardRevision = revision.Card
// get contact revision
r, w, _ = NewRequest("GET", "/contact/cards/{cardId}", nil)
vars = map[string]string{ "cardId": bCard }
r = mux.SetURLVars(r, vars)
SetBearerAuth(r, b)
GetCard(w, r)
assert.NoError(t, ReadResponse(w, &card))
contactCardRevision = card.ContentRevision
// set contact group
r, w, _ = NewRequest("PUT", "/contact/cards/{cardId}/groups/{groupId}", nil)
vars = make(map[string]string)
vars["groupId"] = group.GroupId
vars["cardId"] = aCard
r = mux.SetURLVars(r, vars)
SetBearerAuth(r, a)
SetCardGroup(w, r)
assert.NoError(t, ReadResponse(w, &cardData))
assert.Equal(t, 1, len(cardData.Groups))
// get contact revision
r, w, _ = NewRequest("GET", "/contact/cards/{cardId}", nil)
vars = map[string]string{ "cardId": aCard }
r = mux.SetURLVars(r, vars)
SetBearerAuth(r, a)
GetCard(w, r)
card = Card{}
assert.NoError(t, ReadResponse(w, &card))
assert.Equal(t, len(card.CardData.Groups), 1)
// receive revision
err = StatusRevision(wsA, &revision)
assert.NoError(t, err)
assert.NotEqual(t, cardRevision, revision.Card)
groupRevision = revision.Group
err = StatusRevision(wsB, &revision)
assert.NoError(t, err)
assert.NotEqual(t, contactRevision, revision.Card)
contactRevision = revision.Card
// get contact revision
r, w, _ = NewRequest("GET", "/contact/cards/{cardId}", nil)
vars = map[string]string{ "cardId": bCard }
r = mux.SetURLVars(r, vars)
SetBearerAuth(r, b)
GetCard(w, r)
assert.NoError(t, ReadResponse(w, &card))
assert.NotEqual(t, contactCardRevision, card.ContentRevision)
contactCardRevision = card.ContentRevision
// show group view
r, w, _ = NewRequest("GET", "/share/groups", nil)
SetBearerAuth(r, a)
GetGroups(w, r)
assert.NoError(t, ReadResponse(w, &groups))
assert.Equal(t, 1, len(groups))
// update group in conatact 0
subject = &Subject{
DataType: "imagroupEDIT",
Data: "group data with name and logo",
}
r, w, _ = NewRequest("POST", "/share/groups", subject)
vars = make(map[string]string)
vars["groupId"] = group.GroupId
r = mux.SetURLVars(r, vars)
SetBearerAuth(r, a)
UpdateGroup(w, r)
assert.NoError(t, ReadResponse(w, &group))
assert.Equal(t, group.DataType, "imagroupEDIT")
// receive revision
err = StatusRevision(wsA, &revision)
assert.NoError(t, err)
assert.NotEqual(t, groupRevision, revision.Group)
groupRevision = revision.Group
// delete group
r, w, _ = NewRequest("DELETE", "/share/groups", nil)
vars = make(map[string]string)
vars["groupId"] = group.GroupId
r = mux.SetURLVars(r, vars)
SetBearerAuth(r, a)
RemoveGroup(w, r)
assert.NoError(t, ReadResponse(w, &group))
// get contact revision
r, w, _ = NewRequest("GET", "/contact/cards/{cardId}", nil)
vars = map[string]string{ "cardId": aCard }
r = mux.SetURLVars(r, vars)
SetBearerAuth(r, a)
GetCard(w, r)
card = Card{}
assert.NoError(t, ReadResponse(w, &card))
assert.Equal(t, len(card.CardData.Groups), 0)
// receive revision
err = StatusRevision(wsA, &revision)
assert.NoError(t, err)
assert.NotEqual(t, groupRevision, revision.Group)
err = StatusRevision(wsB, &revision)
assert.NoError(t, err)
assert.NotEqual(t, contactRevision, revision.Card)
// get contact revision
r, w, _ = NewRequest("GET", "/contact/cards/{cardId}", nil)
vars = map[string]string{ "cardId": bCard }
r = mux.SetURLVars(r, vars)
SetBearerAuth(r, b)
GetCard(w, r)
assert.NoError(t, ReadResponse(w, &card))
assert.NotEqual(t, contactCardRevision, card.ContentRevision)
// show group view
r, w, _ = NewRequest("GET", "/share/groups", nil)
SetBearerAuth(r, a)
GetGroups(w, r)
assert.NoError(t, ReadResponse(w, &groups))
assert.Equal(t, 0, len(groups))
}