diff options
| author | 2022-07-04 15:41:20 +0200 | |
|---|---|---|
| committer | 2022-07-04 15:41:20 +0200 | |
| commit | 4a69651a7c7945b11760d9ca82d9945834f01f73 (patch) | |
| tree | bdcb623ef2c09c4feb2ff3b5e8d36dce521eb7af /internal/api/client/status | |
| parent | [chore] configure instance.Version for testrig (#659) (diff) | |
| download | gotosocial-4a69651a7c7945b11760d9ca82d9945834f01f73.tar.xz | |
[bugfix] Visibility fixes (#687)
* test self boost
* only CC to public when necessary
Diffstat (limited to 'internal/api/client/status')
| -rw-r--r-- | internal/api/client/status/statusboost_test.go | 124 | 
1 files changed, 94 insertions, 30 deletions
| diff --git a/internal/api/client/status/statusboost_test.go b/internal/api/client/status/statusboost_test.go index e33b582e8..c8d33f0f8 100644 --- a/internal/api/client/status/statusboost_test.go +++ b/internal/api/client/status/statusboost_test.go @@ -26,7 +26,6 @@ import (  	"testing"  	"github.com/gin-gonic/gin" -	"github.com/stretchr/testify/assert"  	"github.com/stretchr/testify/suite"  	"github.com/superseriousbusiness/gotosocial/internal/api/client/status"  	"github.com/superseriousbusiness/gotosocial/internal/api/model" @@ -72,36 +71,101 @@ func (suite *StatusBoostTestSuite) TestPostBoost() {  	result := recorder.Result()  	defer result.Body.Close()  	b, err := ioutil.ReadAll(result.Body) -	assert.NoError(suite.T(), err) +	suite.NoError(err)  	statusReply := &model.Status{}  	err = json.Unmarshal(b, statusReply) -	assert.NoError(suite.T(), err) - -	assert.False(suite.T(), statusReply.Sensitive) -	assert.Equal(suite.T(), model.VisibilityPublic, statusReply.Visibility) - -	assert.Equal(suite.T(), targetStatus.ContentWarning, statusReply.SpoilerText) -	assert.Equal(suite.T(), targetStatus.Content, statusReply.Content) -	assert.Equal(suite.T(), "the_mighty_zork", statusReply.Account.Username) -	assert.Len(suite.T(), statusReply.MediaAttachments, 0) -	assert.Len(suite.T(), statusReply.Mentions, 0) -	assert.Len(suite.T(), statusReply.Emojis, 0) -	assert.Len(suite.T(), statusReply.Tags, 0) - -	assert.NotNil(suite.T(), statusReply.Application) -	assert.Equal(suite.T(), "really cool gts application", statusReply.Application.Name) - -	assert.NotNil(suite.T(), statusReply.Reblog) -	assert.Equal(suite.T(), 1, statusReply.Reblog.ReblogsCount) -	assert.Equal(suite.T(), 1, statusReply.Reblog.FavouritesCount) -	assert.Equal(suite.T(), targetStatus.Content, statusReply.Reblog.Content) -	assert.Equal(suite.T(), targetStatus.ContentWarning, statusReply.Reblog.SpoilerText) -	assert.Equal(suite.T(), targetStatus.AccountID, statusReply.Reblog.Account.ID) -	assert.Len(suite.T(), statusReply.Reblog.MediaAttachments, 1) -	assert.Len(suite.T(), statusReply.Reblog.Tags, 1) -	assert.Len(suite.T(), statusReply.Reblog.Emojis, 1) -	assert.Equal(suite.T(), "superseriousbusiness", statusReply.Reblog.Application.Name) +	suite.NoError(err) + +	suite.False(statusReply.Sensitive) +	suite.Equal(model.VisibilityPublic, statusReply.Visibility) + +	suite.Equal(targetStatus.ContentWarning, statusReply.SpoilerText) +	suite.Equal(targetStatus.Content, statusReply.Content) +	suite.Equal("the_mighty_zork", statusReply.Account.Username) +	suite.Len(statusReply.MediaAttachments, 0) +	suite.Len(statusReply.Mentions, 0) +	suite.Len(statusReply.Emojis, 0) +	suite.Len(statusReply.Tags, 0) + +	suite.NotNil(statusReply.Application) +	suite.Equal("really cool gts application", statusReply.Application.Name) + +	suite.NotNil(statusReply.Reblog) +	suite.Equal(1, statusReply.Reblog.ReblogsCount) +	suite.Equal(1, statusReply.Reblog.FavouritesCount) +	suite.Equal(targetStatus.Content, statusReply.Reblog.Content) +	suite.Equal(targetStatus.ContentWarning, statusReply.Reblog.SpoilerText) +	suite.Equal(targetStatus.AccountID, statusReply.Reblog.Account.ID) +	suite.Len(statusReply.Reblog.MediaAttachments, 1) +	suite.Len(statusReply.Reblog.Tags, 1) +	suite.Len(statusReply.Reblog.Emojis, 1) +	suite.Equal("superseriousbusiness", statusReply.Reblog.Application.Name) +} + +func (suite *StatusBoostTestSuite) TestPostBoostOwnFollowersOnly() { +	t := suite.testTokens["local_account_1"] +	oauthToken := oauth.DBTokenToToken(t) + +	testStatus := suite.testStatuses["local_account_1_status_5"] +	testAccount := suite.testAccounts["local_account_1"] +	testUser := suite.testUsers["local_account_1"] + +	recorder := httptest.NewRecorder() +	ctx, _ := gin.CreateTestContext(recorder) +	ctx.Set(oauth.SessionAuthorizedApplication, suite.testApplications["application_1"]) +	ctx.Set(oauth.SessionAuthorizedToken, oauthToken) +	ctx.Set(oauth.SessionAuthorizedUser, testUser) +	ctx.Set(oauth.SessionAuthorizedAccount, testAccount) +	ctx.Request = httptest.NewRequest(http.MethodPost, fmt.Sprintf("http://localhost:8080%s", strings.Replace(status.ReblogPath, ":id", testStatus.ID, 1)), nil) +	ctx.Request.Header.Set("accept", "application/json") + +	ctx.Params = gin.Params{ +		gin.Param{ +			Key:   status.IDKey, +			Value: testStatus.ID, +		}, +	} + +	suite.statusModule.StatusBoostPOSTHandler(ctx) + +	// check response +	suite.EqualValues(http.StatusOK, recorder.Code) + +	result := recorder.Result() +	defer result.Body.Close() +	b, err := ioutil.ReadAll(result.Body) +	suite.NoError(err) + +	responseStatus := &model.Status{} +	err = json.Unmarshal(b, responseStatus) +	suite.NoError(err) + +	suite.False(responseStatus.Sensitive) +	suite.Equal(suite.tc.VisToAPIVis(context.Background(), testStatus.Visibility), responseStatus.Visibility) + +	suite.Equal(testStatus.ContentWarning, responseStatus.SpoilerText) +	suite.Equal(testStatus.Content, responseStatus.Content) +	suite.Equal("the_mighty_zork", responseStatus.Account.Username) +	suite.Len(responseStatus.MediaAttachments, 0) +	suite.Len(responseStatus.Mentions, 0) +	suite.Len(responseStatus.Emojis, 0) +	suite.Len(responseStatus.Tags, 0) + +	suite.NotNil(responseStatus.Application) +	suite.Equal("really cool gts application", responseStatus.Application.Name) + +	suite.NotNil(responseStatus.Reblog) +	suite.Equal(1, responseStatus.Reblog.ReblogsCount) +	suite.Equal(0, responseStatus.Reblog.FavouritesCount) +	suite.Equal(testStatus.Content, responseStatus.Reblog.Content) +	suite.Equal(testStatus.ContentWarning, responseStatus.Reblog.SpoilerText) +	suite.Equal(testStatus.AccountID, responseStatus.Reblog.Account.ID) +	suite.Equal(suite.tc.VisToAPIVis(context.Background(), testStatus.Visibility), responseStatus.Reblog.Visibility) +	suite.Empty(responseStatus.Reblog.MediaAttachments) +	suite.Empty(responseStatus.Reblog.Tags) +	suite.Empty(responseStatus.Reblog.Emojis) +	suite.Equal("really cool gts application", responseStatus.Reblog.Application.Name)  }  // try to boost a status that's not boostable @@ -139,8 +203,8 @@ func (suite *StatusBoostTestSuite) TestPostUnboostable() {  	result := recorder.Result()  	defer result.Body.Close()  	b, err := ioutil.ReadAll(result.Body) -	assert.NoError(suite.T(), err) -	assert.Equal(suite.T(), `{"error":"Forbidden"}`, string(b)) +	suite.NoError(err) +	suite.Equal(`{"error":"Forbidden"}`, string(b))  }  // try to boost a status that's not visible to the user | 
