github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/core/operations/version_test.go (about)

     1  /*
     2  Copyright hechain All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package operations
     8  
     9  import (
    10  	"net/http"
    11  	"net/http/httptest"
    12  
    13  	. "github.com/onsi/ginkgo"
    14  	. "github.com/onsi/gomega"
    15  )
    16  
    17  var _ = Describe("Version", func() {
    18  	It("returns 200 if the method is GET", func() {
    19  		resp := httptest.NewRecorder()
    20  
    21  		versionInfoHandler := &VersionInfoHandler{Version: "latest"}
    22  		versionInfoHandler.ServeHTTP(resp, &http.Request{Method: http.MethodGet})
    23  		Expect(resp.Result().StatusCode).To(Equal(http.StatusOK))
    24  		Expect(resp.Result().Header.Get("Content-Type")).To(Equal("application/json"))
    25  		Expect(resp.Body).To(MatchJSON(`{"Version": "latest"}`))
    26  	})
    27  
    28  	It("returns 400 when an unsupported method is used", func() {
    29  		resp := httptest.NewRecorder()
    30  
    31  		versionInfoHandler := &VersionInfoHandler{}
    32  		versionInfoHandler.ServeHTTP(resp, &http.Request{Method: http.MethodPut})
    33  		Expect(resp.Result().StatusCode).To(Equal(http.StatusBadRequest))
    34  		Expect(resp.Body).To(MatchJSON(`{"Error": "invalid request method: PUT"}`))
    35  	})
    36  
    37  	It("returns 500 when the payload is invalid JSON", func() {
    38  		resp := httptest.NewRecorder()
    39  
    40  		versionInfoHandler := &VersionInfoHandler{}
    41  		versionInfoHandler.sendResponse(resp, 200, make(chan int))
    42  		Expect(resp.Result().StatusCode).To(Equal(http.StatusInternalServerError))
    43  	})
    44  })