Added GitHub Actions CI workflow and initial unit tests
- Added .github/workflows/go-test.yml for automated CI testing using GitHub Actions - Implemented unit tests for: • utils/release.go (FetchLatestRelease) • routes/builds.go (buildsHandler) • routes/status.go (statusHandler) - Ensured tests run with go test ./... -v -cover - Included go vet and gofmt checks in the CI pipeline - Improved project reliability and continuous integration setup
This commit is contained in:
24
NewProxy/tests/builds_test.go
Normal file
24
NewProxy/tests/builds_test.go
Normal file
@@ -0,0 +1,24 @@
|
||||
package tests
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"newproxy/routes"
|
||||
"testing"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func TestBuildsHandler(t *testing.T) {
|
||||
gin.SetMode(gin.TestMode)
|
||||
r := gin.Default()
|
||||
routes.RegisterBuildsRoute(r)
|
||||
|
||||
req, _ := http.NewRequest("GET", "/client/builds.json", nil)
|
||||
w := httptest.NewRecorder()
|
||||
r.ServeHTTP(w, req)
|
||||
|
||||
if w.Code != http.StatusOK {
|
||||
t.Errorf("Expected 200 OK, got %d", w.Code)
|
||||
}
|
||||
}
|
||||
26
NewProxy/tests/release_test.go
Normal file
26
NewProxy/tests/release_test.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package tests
|
||||
|
||||
import (
|
||||
"newproxy/utils"
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestFetchLatestRelease_ValidFile(t *testing.T) {
|
||||
content := `{"release_version": "v1.0.0", "release_time": "2025-01-01T00:00:00Z"}`
|
||||
_ = os.WriteFile("data/release.json", []byte(content), 0644)
|
||||
utils.FetchLatestRelease()
|
||||
|
||||
if utils.LatestRelease.ReleaseVersion != "v1.0.0" {
|
||||
t.Errorf("Expected version v1.0.0, got %s", utils.LatestRelease.ReleaseVersion)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFetchLatestRelease_MissingFile(t *testing.T) {
|
||||
_ = os.Remove("data/release.json")
|
||||
utils.FetchLatestRelease()
|
||||
|
||||
if utils.LatestRelease.ReleaseVersion == "" {
|
||||
t.Errorf("Expected default release info, got empty version")
|
||||
}
|
||||
}
|
||||
24
NewProxy/tests/status_test.go
Normal file
24
NewProxy/tests/status_test.go
Normal file
@@ -0,0 +1,24 @@
|
||||
package tests
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"newproxy/routes"
|
||||
"testing"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func TestStatusHandler(t *testing.T) {
|
||||
gin.SetMode(gin.TestMode)
|
||||
r := gin.Default()
|
||||
routes.RegisterStatusRoute(r)
|
||||
|
||||
req, _ := http.NewRequest("GET", "/status", nil)
|
||||
w := httptest.NewRecorder()
|
||||
r.ServeHTTP(w, req)
|
||||
|
||||
if w.Code != http.StatusOK {
|
||||
t.Errorf("Expected status 200 OK, got %d", w.Code)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user