diff options
author | 2023-01-02 13:10:50 +0100 | |
---|---|---|
committer | 2023-01-02 12:10:50 +0000 | |
commit | 941893a774c83802afdc4cc76e1d30c59b6c5585 (patch) | |
tree | 6e7296146dedfeac8e83655157270f41e190724b /internal/api/s2s/user/statusget_test.go | |
parent | [chore]: Bump github.com/abema/go-mp4 from 0.8.0 to 0.9.0 (#1287) (diff) | |
download | gotosocial-941893a774c83802afdc4cc76e1d30c59b6c5585.tar.xz |
[chore] The Big Middleware and API Refactor (tm) (#1250)
* interim commit: start refactoring middlewares into package under router
* another interim commit, this is becoming a big job
* another fucking massive interim commit
* refactor bookmarks to new style
* ambassador, wiz zeze commits you are spoiling uz
* she compiles, we're getting there
* we're just normal men; we're just innocent men
* apiutil
* whoopsie
* i'm glad noone reads commit msgs haha :blob_sweat:
* use that weirdo go-bytesize library for maxMultipartMemory
* fix media module paths
Diffstat (limited to 'internal/api/s2s/user/statusget_test.go')
-rw-r--r-- | internal/api/s2s/user/statusget_test.go | 162 |
1 files changed, 0 insertions, 162 deletions
diff --git a/internal/api/s2s/user/statusget_test.go b/internal/api/s2s/user/statusget_test.go deleted file mode 100644 index 42f7dbb1b..000000000 --- a/internal/api/s2s/user/statusget_test.go +++ /dev/null @@ -1,162 +0,0 @@ -/* - GoToSocial - Copyright (C) 2021-2022 GoToSocial Authors admin@gotosocial.org - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -package user_test - -import ( - "context" - "encoding/json" - "io/ioutil" - "net/http" - "net/http/httptest" - "strings" - "testing" - - "github.com/gin-gonic/gin" - "github.com/stretchr/testify/suite" - "github.com/superseriousbusiness/activity/streams" - "github.com/superseriousbusiness/activity/streams/vocab" - "github.com/superseriousbusiness/gotosocial/internal/api/s2s/user" - "github.com/superseriousbusiness/gotosocial/testrig" -) - -type StatusGetTestSuite struct { - UserStandardTestSuite -} - -func (suite *StatusGetTestSuite) TestGetStatus() { - // the dereference we're gonna use - derefRequests := testrig.NewTestDereferenceRequests(suite.testAccounts) - signedRequest := derefRequests["foss_satan_dereference_local_account_1_status_1"] - targetAccount := suite.testAccounts["local_account_1"] - targetStatus := suite.testStatuses["local_account_1_status_1"] - - // setup request - recorder := httptest.NewRecorder() - ctx, _ := testrig.CreateGinTestContext(recorder, nil) - ctx.Request = httptest.NewRequest(http.MethodGet, targetStatus.URI, nil) // the endpoint we're hitting - ctx.Request.Header.Set("accept", "application/activity+json") - ctx.Request.Header.Set("Signature", signedRequest.SignatureHeader) - ctx.Request.Header.Set("Date", signedRequest.DateHeader) - - // we need to pass the context through signature check first to set appropriate values on it - suite.securityModule.SignatureCheck(ctx) - - // normally the router would populate these params from the path values, - // but because we're calling the function directly, we need to set them manually. - ctx.Params = gin.Params{ - gin.Param{ - Key: user.UsernameKey, - Value: targetAccount.Username, - }, - gin.Param{ - Key: user.StatusIDKey, - Value: targetStatus.ID, - }, - } - - // trigger the function being tested - suite.userModule.StatusGETHandler(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) - - // should be a Note - m := make(map[string]interface{}) - err = json.Unmarshal(b, &m) - suite.NoError(err) - - t, err := streams.ToType(context.Background(), m) - suite.NoError(err) - - note, ok := t.(vocab.ActivityStreamsNote) - suite.True(ok) - - // convert note to status - a, err := suite.tc.ASStatusToStatus(context.Background(), note) - suite.NoError(err) - suite.EqualValues(targetStatus.Content, a.Content) -} - -func (suite *StatusGetTestSuite) TestGetStatusLowercase() { - // the dereference we're gonna use - derefRequests := testrig.NewTestDereferenceRequests(suite.testAccounts) - signedRequest := derefRequests["foss_satan_dereference_local_account_1_status_1_lowercase"] - targetAccount := suite.testAccounts["local_account_1"] - targetStatus := suite.testStatuses["local_account_1_status_1"] - - // setup request - recorder := httptest.NewRecorder() - ctx, _ := testrig.CreateGinTestContext(recorder, nil) - ctx.Request = httptest.NewRequest(http.MethodGet, strings.ToLower(targetStatus.URI), nil) // the endpoint we're hitting - ctx.Request.Header.Set("accept", "application/activity+json") - ctx.Request.Header.Set("Signature", signedRequest.SignatureHeader) - ctx.Request.Header.Set("Date", signedRequest.DateHeader) - - // we need to pass the context through signature check first to set appropriate values on it - suite.securityModule.SignatureCheck(ctx) - - // normally the router would populate these params from the path values, - // but because we're calling the function directly, we need to set them manually. - ctx.Params = gin.Params{ - gin.Param{ - Key: user.UsernameKey, - Value: strings.ToLower(targetAccount.Username), - }, - gin.Param{ - Key: user.StatusIDKey, - Value: strings.ToLower(targetStatus.ID), - }, - } - - // trigger the function being tested - suite.userModule.StatusGETHandler(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) - - // should be a Note - m := make(map[string]interface{}) - err = json.Unmarshal(b, &m) - suite.NoError(err) - - t, err := streams.ToType(context.Background(), m) - suite.NoError(err) - - note, ok := t.(vocab.ActivityStreamsNote) - suite.True(ok) - - // convert note to status - a, err := suite.tc.ASStatusToStatus(context.Background(), note) - suite.NoError(err) - suite.EqualValues(targetStatus.Content, a.Content) -} - -func TestStatusGetTestSuite(t *testing.T) { - suite.Run(t, new(StatusGetTestSuite)) -} |