2022-01-19 23:03:06 +00:00
|
|
|
package databag
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
2022-01-21 05:48:24 +00:00
|
|
|
"github.com/gorilla/websocket"
|
2022-01-21 00:26:59 +00:00
|
|
|
"github.com/gorilla/mux"
|
2022-01-20 04:25:20 +00:00
|
|
|
"github.com/stretchr/testify/assert"
|
2022-01-19 23:03:06 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestConnectContact(t *testing.T) {
|
2022-01-21 00:26:59 +00:00
|
|
|
var card Card
|
2022-01-21 05:48:24 +00:00
|
|
|
var revision Revision
|
2022-01-21 01:01:02 +00:00
|
|
|
var msg DataMessage
|
|
|
|
var vars map[string]string
|
2022-01-23 04:37:14 +00:00
|
|
|
var cardRevision int64
|
2022-01-21 18:34:08 +00:00
|
|
|
var contactStatus ContactStatus
|
2022-01-27 19:45:01 +00:00
|
|
|
var ws *websocket.Conn
|
|
|
|
var err error
|
|
|
|
|
2022-01-19 23:03:06 +00:00
|
|
|
|
2022-01-20 23:19:26 +00:00
|
|
|
// create some contacts for this test
|
2022-01-27 08:07:42 +00:00
|
|
|
_, a, _ := AddTestAccount("connect0")
|
|
|
|
_, b, _ := AddTestAccount("connect1")
|
2022-01-19 23:03:06 +00:00
|
|
|
|
2022-01-21 01:01:02 +00:00
|
|
|
// get A identity message
|
2022-01-20 23:19:26 +00:00
|
|
|
r, w, _ := NewRequest("GET", "/profile/message", nil)
|
2022-01-23 05:47:39 +00:00
|
|
|
r.Header.Add("TokenType", APP_TOKENAPP)
|
2022-01-27 08:07:42 +00:00
|
|
|
SetBearerAuth(r, a)
|
2022-01-20 08:05:12 +00:00
|
|
|
GetProfileMessage(w, r)
|
|
|
|
assert.NoError(t, ReadResponse(w, &msg))
|
|
|
|
|
2022-01-21 05:48:24 +00:00
|
|
|
// app connects websocket
|
2022-01-27 19:45:01 +00:00
|
|
|
ws, err = StatusConnection(b, &revision);
|
|
|
|
assert.NoError(t, err)
|
2022-01-21 05:48:24 +00:00
|
|
|
|
2022-01-21 01:01:02 +00:00
|
|
|
// add A card in B
|
2022-01-20 23:19:26 +00:00
|
|
|
r, w, _ = NewRequest("POST", "/contact/cards", &msg)
|
2022-01-27 08:07:42 +00:00
|
|
|
SetBearerAuth(r, b)
|
2022-01-20 23:19:26 +00:00
|
|
|
AddCard(w, r)
|
2022-01-21 00:26:59 +00:00
|
|
|
assert.NoError(t, ReadResponse(w, &card))
|
|
|
|
|
2022-01-21 05:48:24 +00:00
|
|
|
// profile revision incremented
|
2022-01-27 19:45:01 +00:00
|
|
|
err = StatusRevision(ws, &revision)
|
|
|
|
assert.NoError(t, err)
|
2022-01-23 04:37:14 +00:00
|
|
|
cardRevision = revision.Card
|
2022-01-21 05:48:24 +00:00
|
|
|
|
2022-01-21 01:01:02 +00:00
|
|
|
// update A status to connecting
|
2022-01-21 00:26:59 +00:00
|
|
|
r, w, _ = NewRequest("PUT", "/contact/cards/{cardId}/status", APP_CARDCONNECTING)
|
2022-01-21 01:01:02 +00:00
|
|
|
vars = map[string]string{ "cardId": card.CardId }
|
2022-01-21 00:26:59 +00:00
|
|
|
r = mux.SetURLVars(r, vars)
|
2022-01-27 08:07:42 +00:00
|
|
|
SetBearerAuth(r, b)
|
2022-01-21 00:26:59 +00:00
|
|
|
SetCardStatus(w, r)
|
2022-01-20 23:19:26 +00:00
|
|
|
assert.NoError(t, ReadResponse(w, &card))
|
|
|
|
|
2022-01-21 18:34:08 +00:00
|
|
|
// card revision incremented
|
2022-01-27 19:45:01 +00:00
|
|
|
err = StatusRevision(ws, &revision)
|
|
|
|
assert.NoError(t, err)
|
2022-01-23 04:37:14 +00:00
|
|
|
assert.NotEqual(t, cardRevision, revision.Card)
|
|
|
|
cardRevision = revision.Card
|
2022-01-21 05:48:24 +00:00
|
|
|
|
2022-01-21 01:01:02 +00:00
|
|
|
// get open message to A
|
|
|
|
r, w, _ = NewRequest("GET", "/contact/cards/{cardId}/openMessage", nil)
|
|
|
|
vars = map[string]string{ "cardId": card.CardId }
|
|
|
|
r = mux.SetURLVars(r, vars)
|
2022-01-27 08:07:42 +00:00
|
|
|
SetBearerAuth(r, b)
|
2022-01-21 01:01:02 +00:00
|
|
|
GetOpenMessage(w, r)
|
|
|
|
assert.NoError(t, ReadResponse(w, &msg))
|
|
|
|
|
2022-01-21 07:41:08 +00:00
|
|
|
// set open message in A
|
|
|
|
r, w, _ = NewRequest("PUT", "/contact/openMessage", msg)
|
|
|
|
SetOpenMessage(w, r)
|
|
|
|
assert.NoError(t, ReadResponse(w, &contactStatus))
|
|
|
|
|
2022-01-21 08:05:42 +00:00
|
|
|
// get view of cards in A
|
2022-01-21 08:39:43 +00:00
|
|
|
r, w, _ = NewRequest("GET", "/contact/cards/view", nil)
|
2022-01-27 08:07:42 +00:00
|
|
|
SetBearerAuth(r, a)
|
2022-01-21 08:05:42 +00:00
|
|
|
GetCardView(w, r)
|
|
|
|
var views []CardView
|
|
|
|
assert.NoError(t, ReadResponse(w, &views))
|
2022-01-21 08:39:43 +00:00
|
|
|
assert.Equal(t, len(views), 1)
|
2022-01-21 08:05:42 +00:00
|
|
|
|
2022-01-21 08:39:43 +00:00
|
|
|
// get B card in A
|
|
|
|
r, w, _ = NewRequest("GET", "/contact/cards/{cardId}", nil)
|
|
|
|
vars = map[string]string{ "cardId": views[0].CardId }
|
|
|
|
r = mux.SetURLVars(r, vars)
|
2022-01-27 08:07:42 +00:00
|
|
|
SetBearerAuth(r, a)
|
2022-01-21 08:39:43 +00:00
|
|
|
GetCard(w, r)
|
|
|
|
assert.NoError(t, ReadResponse(w, &card))
|
|
|
|
|
2022-01-21 18:34:08 +00:00
|
|
|
// update B status to connecting
|
|
|
|
r, w, _ = NewRequest("PUT", "/contact/cards/{cardId}/status", APP_CARDCONNECTING)
|
|
|
|
vars = map[string]string{ "cardId": views[0].CardId }
|
|
|
|
r = mux.SetURLVars(r, vars)
|
2022-01-27 08:07:42 +00:00
|
|
|
SetBearerAuth(r, a)
|
2022-01-21 18:34:08 +00:00
|
|
|
SetCardStatus(w, r)
|
|
|
|
assert.NoError(t, ReadResponse(w, &card))
|
2022-01-19 23:03:06 +00:00
|
|
|
|
2022-01-21 18:34:08 +00:00
|
|
|
// get open message to B
|
|
|
|
r, w, _ = NewRequest("GET", "/contact/cards/{cardId}/openMessage", nil)
|
|
|
|
vars = map[string]string{ "cardId": views[0].CardId }
|
|
|
|
r = mux.SetURLVars(r, vars)
|
2022-01-27 08:07:42 +00:00
|
|
|
SetBearerAuth(r, a)
|
2022-01-21 18:34:08 +00:00
|
|
|
GetOpenMessage(w, r)
|
|
|
|
assert.NoError(t, ReadResponse(w, &msg))
|
2022-01-19 23:03:06 +00:00
|
|
|
|
2022-01-21 18:34:08 +00:00
|
|
|
// set open message in B
|
|
|
|
r, w, _ = NewRequest("PUT", "/contact/openMessage", msg)
|
|
|
|
SetOpenMessage(w, r)
|
|
|
|
assert.NoError(t, ReadResponse(w, &contactStatus))
|
|
|
|
assert.Equal(t, APP_CARDCONNECTED, contactStatus.Status)
|
2022-01-19 23:03:06 +00:00
|
|
|
|
2022-01-21 18:34:08 +00:00
|
|
|
// card revision incremented
|
2022-01-27 19:45:01 +00:00
|
|
|
err = StatusRevision(ws, &revision)
|
|
|
|
assert.NoError(t, err)
|
2022-01-23 04:37:14 +00:00
|
|
|
assert.NotEqual(t, cardRevision, revision.Card)
|
|
|
|
cardRevision = revision.Card
|
2022-01-19 23:03:06 +00:00
|
|
|
|
2022-01-21 18:34:08 +00:00
|
|
|
// update B status to connected
|
|
|
|
r, w, _ = NewRequest("PUT", "/contact/cards/{cardId}/status?token=" + contactStatus.Token, APP_CARDCONNECTED)
|
|
|
|
vars = map[string]string{ "cardId": views[0].CardId }
|
|
|
|
r = mux.SetURLVars(r, vars)
|
2022-01-27 08:07:42 +00:00
|
|
|
SetBearerAuth(r, a)
|
2022-01-21 18:34:08 +00:00
|
|
|
SetCardStatus(w, r)
|
|
|
|
assert.NoError(t, ReadResponse(w, &card))
|
2022-01-19 23:03:06 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|