2022-02-20 08:15:04 +00:00
|
|
|
package databag
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestContactApp(t *testing.T) {
|
2022-02-22 06:47:23 +00:00
|
|
|
var params *TestApiParams
|
|
|
|
var response *TestApiResponse
|
2022-02-20 08:15:04 +00:00
|
|
|
|
|
|
|
// allocate test accounts
|
|
|
|
set, err := AddTestGroup("contactapp")
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
// allocate new test app
|
|
|
|
app := NewTestApp()
|
|
|
|
go app.Connect(set.A.Token)
|
|
|
|
|
|
|
|
// wait for test
|
|
|
|
assert.NoError(t, app.WaitFor(func(testApp *TestApp)bool{
|
|
|
|
if testApp.profile.Handle == "contactappA" {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}))
|
|
|
|
|
|
|
|
// update profile name
|
|
|
|
profileData := &ProfileData{
|
|
|
|
Name: "Roland",
|
|
|
|
Location: "San Diago",
|
|
|
|
};
|
|
|
|
assert.NoError(t, ApiTestMsg(SetProfile, "PUT", "/profile/data", nil, profileData,
|
|
|
|
APP_TOKENAPP, set.A.Token, nil, nil))
|
|
|
|
|
|
|
|
// wait for test
|
|
|
|
assert.NoError(t, app.WaitFor(func(testApp *TestApp)bool{
|
|
|
|
if testApp.profile.Location == "San Diago" {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}))
|
|
|
|
|
2022-02-22 05:52:49 +00:00
|
|
|
// add a new article
|
|
|
|
article := &Article{}
|
|
|
|
subject := &Subject{ Data: "subjectdata", DataType: "subjectdatatype" }
|
2022-02-22 06:47:23 +00:00
|
|
|
params = &TestApiParams{ restType: "POST", query: "/articles", tokenType: APP_TOKENAPP, token: set.A.Token, body: subject }
|
|
|
|
response = &TestApiResponse{ data: article }
|
2022-02-22 05:52:49 +00:00
|
|
|
assert.NoError(t, TestApiRequest(AddArticle, params, response))
|
|
|
|
|
|
|
|
// wait for a
|
|
|
|
assert.NoError(t, app.WaitFor(func(testApp *TestApp)bool {
|
|
|
|
a, set := testApp.articles[article.Id]
|
|
|
|
if set && a.Data.Data == "subjectdata" {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}))
|
|
|
|
|
|
|
|
// remove a new article
|
|
|
|
params = &TestApiParams{ restType: "DELETE", query: "/articles/{articleId}", path: map[string]string{ "articleId": article.Id },
|
|
|
|
tokenType: APP_TOKENAPP, token: set.A.Token, body: subject }
|
|
|
|
response = &TestApiResponse{}
|
|
|
|
assert.NoError(t, TestApiRequest(RemoveArticle, params, response))
|
|
|
|
|
|
|
|
// wait for a to be removed
|
|
|
|
assert.NoError(t, app.WaitFor(func(testApp *TestApp)bool {
|
|
|
|
if _, set := testApp.articles[article.Id]; !set {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}))
|
2022-02-20 08:15:04 +00:00
|
|
|
|
2022-02-22 23:02:31 +00:00
|
|
|
// add a new article in contact
|
|
|
|
article = &Article{}
|
|
|
|
subject = &Subject{ Data: "subjectdataB", DataType: "subjectdatatypeB" }
|
|
|
|
params = &TestApiParams{ restType: "POST", query: "/articles", tokenType: APP_TOKENAPP, token: set.B.Token, body: subject }
|
|
|
|
response = &TestApiResponse{ data: article }
|
|
|
|
assert.NoError(t, TestApiRequest(AddArticle, params, response))
|
|
|
|
articleId := article.Id
|
|
|
|
|
|
|
|
// share article
|
|
|
|
article = &Article{}
|
|
|
|
params = &TestApiParams{ restType: "POST", query: "/articles/{articleId}/groups/{groupId}", tokenType: APP_TOKENAPP, token: set.B.Token,
|
|
|
|
path: map[string]string{ "articleId": articleId, "groupId": set.B.A.GroupId }}
|
|
|
|
response = &TestApiResponse{ data: article }
|
|
|
|
assert.NoError(t, TestApiRequest(SetArticleGroup, params, response))
|
|
|
|
|
|
|
|
// wait for
|
|
|
|
assert.NoError(t, app.WaitFor(func(testApp *TestApp)bool {
|
|
|
|
contact, contactSet := testApp.contacts[set.A.B.CardId]
|
|
|
|
if contactSet {
|
|
|
|
article, articleSet := contact.articles[articleId]
|
|
|
|
if articleSet {
|
|
|
|
PrintMsg(article)
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}))
|
|
|
|
|
2022-02-20 08:15:04 +00:00
|
|
|
}
|