accountdelete_test.go (3140B)
1 // GoToSocial 2 // Copyright (C) GoToSocial Authors admin@gotosocial.org 3 // SPDX-License-Identifier: AGPL-3.0-or-later 4 // 5 // This program is free software: you can redistribute it and/or modify 6 // it under the terms of the GNU Affero General Public License as published by 7 // the Free Software Foundation, either version 3 of the License, or 8 // (at your option) any later version. 9 // 10 // This program is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU Affero General Public License for more details. 14 // 15 // You should have received a copy of the GNU Affero General Public License 16 // along with this program. If not, see <http://www.gnu.org/licenses/>. 17 18 package accounts_test 19 20 import ( 21 "net/http" 22 "net/http/httptest" 23 "testing" 24 25 "github.com/stretchr/testify/suite" 26 "github.com/superseriousbusiness/gotosocial/internal/api/client/accounts" 27 "github.com/superseriousbusiness/gotosocial/testrig" 28 ) 29 30 type AccountDeleteTestSuite struct { 31 AccountStandardTestSuite 32 } 33 34 func (suite *AccountDeleteTestSuite) TestAccountDeletePOSTHandler() { 35 // set up the request 36 // we're deleting zork 37 requestBody, w, err := testrig.CreateMultipartFormData( 38 "", "", 39 map[string]string{ 40 "password": "password", 41 }) 42 if err != nil { 43 panic(err) 44 } 45 bodyBytes := requestBody.Bytes() 46 recorder := httptest.NewRecorder() 47 ctx := suite.newContext(recorder, http.MethodPost, bodyBytes, accounts.DeletePath, w.FormDataContentType()) 48 49 // call the handler 50 suite.accountsModule.AccountDeletePOSTHandler(ctx) 51 52 // 1. we should have Accepted because our request was valid 53 suite.Equal(http.StatusAccepted, recorder.Code) 54 } 55 56 func (suite *AccountDeleteTestSuite) TestAccountDeletePOSTHandlerWrongPassword() { 57 // set up the request 58 // we're deleting zork 59 requestBody, w, err := testrig.CreateMultipartFormData( 60 "", "", 61 map[string]string{ 62 "password": "aaaaaaaaaaaaaaaaaaaaaaaaaaaa", 63 }) 64 if err != nil { 65 panic(err) 66 } 67 bodyBytes := requestBody.Bytes() 68 recorder := httptest.NewRecorder() 69 ctx := suite.newContext(recorder, http.MethodPost, bodyBytes, accounts.DeletePath, w.FormDataContentType()) 70 71 // call the handler 72 suite.accountsModule.AccountDeletePOSTHandler(ctx) 73 74 // 1. we should have Forbidden because we supplied the wrong password 75 suite.Equal(http.StatusForbidden, recorder.Code) 76 } 77 78 func (suite *AccountDeleteTestSuite) TestAccountDeletePOSTHandlerNoPassword() { 79 // set up the request 80 // we're deleting zork 81 requestBody, w, err := testrig.CreateMultipartFormData( 82 "", "", 83 map[string]string{}) 84 if err != nil { 85 panic(err) 86 } 87 bodyBytes := requestBody.Bytes() 88 recorder := httptest.NewRecorder() 89 ctx := suite.newContext(recorder, http.MethodPost, bodyBytes, accounts.DeletePath, w.FormDataContentType()) 90 91 // call the handler 92 suite.accountsModule.AccountDeletePOSTHandler(ctx) 93 94 // 1. we should have StatusBadRequest because our request was invalid 95 suite.Equal(http.StatusBadRequest, recorder.Code) 96 } 97 98 func TestAccountDeleteTestSuite(t *testing.T) { 99 suite.Run(t, new(AccountDeleteTestSuite)) 100 }