diff options
Diffstat (limited to 'internal/api/activitypub')
| -rw-r--r-- | internal/api/activitypub/users/outboxget_test.go | 48 | ||||
| -rw-r--r-- | internal/api/activitypub/users/repliesget_test.go | 16 | 
2 files changed, 34 insertions, 30 deletions
diff --git a/internal/api/activitypub/users/outboxget_test.go b/internal/api/activitypub/users/outboxget_test.go index 1abe31ef6..4829a8946 100644 --- a/internal/api/activitypub/users/outboxget_test.go +++ b/internal/api/activitypub/users/outboxget_test.go @@ -25,6 +25,7 @@ import (  	"net/http"  	"net/http/httptest"  	"testing" +	"time"  	"github.com/gin-gonic/gin"  	"github.com/stretchr/testify/suite" @@ -101,12 +102,6 @@ func (suite *OutboxGetTestSuite) TestGetOutboxFirstPage() {  	signedRequest := derefRequests["foss_satan_dereference_zork_outbox_first"]  	targetAccount := suite.testAccounts["local_account_1"] -	tc := testrig.NewTestTransportController(&suite.state, testrig.NewMockHTTPClient(nil, "../../../../testrig/media")) -	federator := testrig.NewTestFederator(&suite.state, tc, suite.mediaManager) -	emailSender := testrig.NewEmailSender("../../../../web/template/", nil) -	processor := testrig.NewTestProcessor(&suite.state, federator, emailSender, suite.mediaManager) -	userModule := users.New(processor) -  	// setup request  	recorder := httptest.NewRecorder()  	ctx, _ := testrig.CreateGinTestContext(recorder, nil) @@ -128,7 +123,7 @@ func (suite *OutboxGetTestSuite) TestGetOutboxFirstPage() {  	}  	// trigger the function being tested -	userModule.OutboxGETHandler(ctx) +	suite.userModule.OutboxGETHandler(ctx)  	// check response  	suite.EqualValues(http.StatusOK, recorder.Code) @@ -137,6 +132,7 @@ func (suite *OutboxGetTestSuite) TestGetOutboxFirstPage() {  	defer result.Body.Close()  	b, err := ioutil.ReadAll(result.Body)  	suite.NoError(err) +	b = checkDropPublished(suite.T(), b, "orderedItems")  	dst := new(bytes.Buffer)  	err = json.Indent(dst, b, "", "  ")  	suite.NoError(err) @@ -147,9 +143,8 @@ func (suite *OutboxGetTestSuite) TestGetOutboxFirstPage() {    "orderedItems": {      "actor": "http://localhost:8080/users/the_mighty_zork",      "cc": "http://localhost:8080/users/the_mighty_zork/followers", -    "id": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/activity", +    "id": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/activity#Create",      "object": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY", -    "published": "2021-10-20T10:40:37Z",      "to": "https://www.w3.org/ns/activitystreams#Public",      "type": "Create"    }, @@ -175,12 +170,6 @@ func (suite *OutboxGetTestSuite) TestGetOutboxNextPage() {  	signedRequest := derefRequests["foss_satan_dereference_zork_outbox_next"]  	targetAccount := suite.testAccounts["local_account_1"] -	tc := testrig.NewTestTransportController(&suite.state, testrig.NewMockHTTPClient(nil, "../../../../testrig/media")) -	federator := testrig.NewTestFederator(&suite.state, tc, suite.mediaManager) -	emailSender := testrig.NewEmailSender("../../../../web/template/", nil) -	processor := testrig.NewTestProcessor(&suite.state, federator, emailSender, suite.mediaManager) -	userModule := users.New(processor) -  	// setup request  	recorder := httptest.NewRecorder()  	ctx, _ := testrig.CreateGinTestContext(recorder, nil) @@ -206,7 +195,7 @@ func (suite *OutboxGetTestSuite) TestGetOutboxNextPage() {  	}  	// trigger the function being tested -	userModule.OutboxGETHandler(ctx) +	suite.userModule.OutboxGETHandler(ctx)  	// check response  	suite.EqualValues(http.StatusOK, recorder.Code) @@ -240,3 +229,30 @@ func (suite *OutboxGetTestSuite) TestGetOutboxNextPage() {  func TestOutboxGetTestSuite(t *testing.T) {  	suite.Run(t, new(OutboxGetTestSuite))  } + +// checkDropPublished checks the published field at given key position for formatting, and drops from the JSON. +// This is useful because the published property is usually set to the current time string (which is difficult to test). +func checkDropPublished(t *testing.T, b []byte, at ...string) []byte { +	m := make(map[string]any) +	if err := json.Unmarshal(b, &m); err != nil { +		t.Fatalf("error unmarshaling json into map: %v", err) +	} +	mm := m +	for _, key := range at { +		switch vt := mm[key].(type) { +		case map[string]any: +			mm = vt +		} +	} +	if s, ok := mm["published"].(string); !ok { +		t.Fatal("missing published data on json") +	} else if _, err := time.Parse(time.RFC3339, s); err != nil { +		t.Fatalf("error parsing published time: %v", err) +	} +	delete(mm, "published") +	b, err := json.Marshal(m) +	if err != nil { +		t.Fatalf("error remarshaling json: %v", err) +	} +	return b +} diff --git a/internal/api/activitypub/users/repliesget_test.go b/internal/api/activitypub/users/repliesget_test.go index f81dddadd..26492d8ce 100644 --- a/internal/api/activitypub/users/repliesget_test.go +++ b/internal/api/activitypub/users/repliesget_test.go @@ -101,12 +101,6 @@ func (suite *RepliesGetTestSuite) TestGetRepliesNext() {  	targetAccount := suite.testAccounts["local_account_1"]  	targetStatus := suite.testStatuses["local_account_1_status_1"] -	tc := testrig.NewTestTransportController(&suite.state, testrig.NewMockHTTPClient(nil, "../../../../testrig/media")) -	federator := testrig.NewTestFederator(&suite.state, tc, suite.mediaManager) -	emailSender := testrig.NewEmailSender("../../../../web/template/", nil) -	processor := testrig.NewTestProcessor(&suite.state, federator, emailSender, suite.mediaManager) -	userModule := users.New(processor) -  	// setup request  	recorder := httptest.NewRecorder()  	ctx, _ := testrig.CreateGinTestContext(recorder, nil) @@ -132,7 +126,7 @@ func (suite *RepliesGetTestSuite) TestGetRepliesNext() {  	}  	// trigger the function being tested -	userModule.StatusRepliesGETHandler(ctx) +	suite.userModule.StatusRepliesGETHandler(ctx)  	// check response  	suite.EqualValues(http.StatusOK, recorder.Code) @@ -165,12 +159,6 @@ func (suite *RepliesGetTestSuite) TestGetRepliesLast() {  	targetAccount := suite.testAccounts["local_account_1"]  	targetStatus := suite.testStatuses["local_account_1_status_1"] -	tc := testrig.NewTestTransportController(&suite.state, testrig.NewMockHTTPClient(nil, "../../../../testrig/media")) -	federator := testrig.NewTestFederator(&suite.state, tc, suite.mediaManager) -	emailSender := testrig.NewEmailSender("../../../../web/template/", nil) -	processor := testrig.NewTestProcessor(&suite.state, federator, emailSender, suite.mediaManager) -	userModule := users.New(processor) -  	// setup request  	recorder := httptest.NewRecorder()  	ctx, _ := testrig.CreateGinTestContext(recorder, nil) @@ -196,7 +184,7 @@ func (suite *RepliesGetTestSuite) TestGetRepliesLast() {  	}  	// trigger the function being tested -	userModule.StatusRepliesGETHandler(ctx) +	suite.userModule.StatusRepliesGETHandler(ctx)  	// check response  	suite.EqualValues(http.StatusOK, recorder.Code)  | 
