package main import ( "net/http" "net/http/httptest" "testing" "sigs.k8s.io/controller-runtime/pkg/log" "edge-infra.dev/pkg/lib/fog" "github.com/gin-gonic/gin" "github.com/stretchr/testify/assert" clientConfig "sigs.k8s.io/controller-runtime/pkg/client/config" "sigs.k8s.io/controller-runtime/pkg/manager" config "edge-infra.dev/pkg/edge/device-registrar/config" services "edge-infra.dev/pkg/edge/device-registrar/services" ) // SetupRouter initializes the Gin router func SetupRouter() *gin.Engine { r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "message": "pong", }) }) return r } // TestPingEndpoint tests the /ping endpoint func TestPingEndpoint(t *testing.T) { router := SetupRouter() w := httptest.NewRecorder() req, _ := http.NewRequest("GET", "/ping", nil) router.ServeHTTP(w, req) assert.Equal(t, http.StatusOK, w.Code) assert.Equal(t, `{"message":"pong"}`, w.Body.String()) } func main() { // Set up the logger log.SetLogger(fog.New()) router := gin.Default() // Register the custom resource types with the scheme cfg := clientConfig.GetConfigOrDie() mgr, err := manager.New(cfg, manager.Options{}) if err != nil { panic(err) } config.AddToScheme(mgr.GetScheme()) setupRoutes(router) // Run the server on port 8080 if err := router.Run(":8080"); err != nil { panic(err) } } // SetupRoutes sets up the HTTP routes for the API func setupRoutes(router *gin.Engine) { router.GET("/applications", services.ListApplications) router.DELETE("/applications/:appID", services.DeleteApplication) router.POST("/register", services.RegisterDevice) router.GET("/bootstrap/:activationCode", services.BootstrapDevice) router.POST("/pair", services.Pair) router.GET("/discover/:serviceName", services.DiscoverService) router.POST("/connect/:activationCode", services.ConnectDevice) router.DELETE("/devices/:name", services.DeleteDeviceService) }