add test code

This commit is contained in:
2022-09-19 07:47:09 +07:00
parent 8de7cef179
commit cda2e7a2bc
4 changed files with 45 additions and 0 deletions

View File

@@ -15,6 +15,7 @@ variables:
stages:
- build
- test
- push
- artifacts
- release
@@ -26,6 +27,16 @@ stages:
when: never
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
test_code:
stage: test
image: golang:latest
<<: *rules
script:
- cd app
- CGO_ENABLED=0 GOOS=linux GO111MODULE=auto go test
tags:
- docker
build_main:
stage: build
image: golang:latest

26
ci/app/go_test.go Normal file
View File

@@ -0,0 +1,26 @@
package main
import (
"net/http"
"net/http/httptest"
"strings"
"testing"
)
func TestHealthMessage(t *testing.T) {
wr := httptest.NewRecorder()
req := httptest.NewRequest(http.MethodGet, "/health", nil)
healthMessage(wr, req)
if wr.Code != http.StatusOK {
t.Errorf("got HTTP status code %d, expected 200", wr.Code)
}
if !strings.Contains(wr.Body.String(), `{"health":"OK"}`) {
t.Errorf(
`response body "%s" does not contain "health OK"`,
wr.Body.String(),
)
}
}

View File

@@ -12,6 +12,11 @@ func indexHandler(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("<h1>Hello World, im ver:"+Version+" !</h1>"))
}
func healthMessage(w http.ResponseWriter, r *http.Request) {
w.Header().Add("Content-Type", "application/json")
w.Write([]byte(`{"health":"OK"}`))
}
func main() {
port := os.Getenv("PORT")
if port == "" {
@@ -22,5 +27,6 @@ func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", indexHandler)
mux.HandleFunc("/health", healthMessage)
http.ListenAndServe(":"+port, mux)
}