github.com/klaytn/klaytn@v1.10.2/networks/rpc/http_test.go (about) 1 // Copyright 2017 The go-ethereum Authors 2 // This file is part of the go-ethereum library. 3 // 4 // The go-ethereum library is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU Lesser General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // The go-ethereum library is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU Lesser General Public License for more details. 13 // 14 // You should have received a copy of the GNU Lesser General Public License 15 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. 16 17 package rpc 18 19 import ( 20 "net/http" 21 "net/http/httptest" 22 "strings" 23 "testing" 24 25 "github.com/klaytn/klaytn/common" 26 ) 27 28 func TestHTTPErrorResponseWithDelete(t *testing.T) { 29 testHTTPErrorResponse(t, http.MethodDelete, contentType, "", http.StatusMethodNotAllowed) 30 } 31 32 func TestHTTPErrorResponseWithPut(t *testing.T) { 33 testHTTPErrorResponse(t, http.MethodPut, contentType, "", http.StatusMethodNotAllowed) 34 } 35 36 func TestHTTPErrorResponseWithMaxContentLength(t *testing.T) { 37 body := make([]rune, common.MaxRequestContentLength+1) 38 testHTTPErrorResponse(t, 39 http.MethodPost, contentType, string(body), http.StatusRequestEntityTooLarge) 40 } 41 42 func TestHTTPErrorResponseWithEmptyContentType(t *testing.T) { 43 testHTTPErrorResponse(t, http.MethodPost, "", "", http.StatusUnsupportedMediaType) 44 } 45 46 func TestHTTPErrorResponseWithValidRequest(t *testing.T) { 47 testHTTPErrorResponse(t, http.MethodPost, contentType, "", 0) 48 } 49 50 func testHTTPErrorResponse(t *testing.T, method, contentType, body string, expected int) { 51 request := httptest.NewRequest(method, "http://url.com", strings.NewReader(body)) 52 request.Header.Set("content-type", contentType) 53 if code, _ := validateRequest(request); code != expected { 54 t.Fatalf("response code should be %d not %d", expected, code) 55 } 56 }