mirror of
https://github.com/balzack/databag.git
synced 2025-02-12 11:39:17 +00:00
178 lines
5.0 KiB
Go
178 lines
5.0 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 contactViewRevision 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))
|
|
contactViewRevision = card.NotifiedView
|
|
|
|
// 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, contactViewRevision, card.NotifiedView)
|
|
contactViewRevision = card.NotifiedView
|
|
|
|
// 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, contactViewRevision, card.NotifiedView)
|
|
|
|
// 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))
|
|
}
|