gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

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 }