...

Source file src/edge-infra.dev/cmd/edge/device-registrar/main.go

Documentation: edge-infra.dev/cmd/edge/device-registrar

     1  package main
     2  
     3  import (
     4  	"net/http"
     5  	"net/http/httptest"
     6  	"testing"
     7  
     8  	"sigs.k8s.io/controller-runtime/pkg/log"
     9  
    10  	"edge-infra.dev/pkg/lib/fog"
    11  
    12  	"github.com/gin-gonic/gin"
    13  	"github.com/stretchr/testify/assert"
    14  
    15  	clientConfig "sigs.k8s.io/controller-runtime/pkg/client/config"
    16  	"sigs.k8s.io/controller-runtime/pkg/manager"
    17  
    18  	config "edge-infra.dev/pkg/edge/device-registrar/config"
    19  	services "edge-infra.dev/pkg/edge/device-registrar/services"
    20  )
    21  
    22  // SetupRouter initializes the Gin router
    23  func SetupRouter() *gin.Engine {
    24  	r := gin.Default()
    25  	r.GET("/ping", func(c *gin.Context) {
    26  		c.JSON(http.StatusOK, gin.H{
    27  			"message": "pong",
    28  		})
    29  	})
    30  	return r
    31  }
    32  
    33  // TestPingEndpoint tests the /ping endpoint
    34  func TestPingEndpoint(t *testing.T) {
    35  	router := SetupRouter()
    36  
    37  	w := httptest.NewRecorder()
    38  	req, _ := http.NewRequest("GET", "/ping", nil)
    39  	router.ServeHTTP(w, req)
    40  
    41  	assert.Equal(t, http.StatusOK, w.Code)
    42  	assert.Equal(t, `{"message":"pong"}`, w.Body.String())
    43  }
    44  
    45  func main() {
    46  	// Set up the logger
    47  	log.SetLogger(fog.New())
    48  
    49  	router := gin.Default()
    50  
    51  	// Register the custom resource types with the scheme
    52  	cfg := clientConfig.GetConfigOrDie()
    53  	mgr, err := manager.New(cfg, manager.Options{})
    54  	if err != nil {
    55  		panic(err)
    56  	}
    57  
    58  	config.AddToScheme(mgr.GetScheme())
    59  
    60  	setupRoutes(router)
    61  
    62  	// Run the server on port 8080
    63  	if err := router.Run(":8080"); err != nil {
    64  		panic(err)
    65  	}
    66  }
    67  
    68  // SetupRoutes sets up the HTTP routes for the API
    69  func setupRoutes(router *gin.Engine) {
    70  	router.GET("/applications", services.ListApplications)
    71  	router.DELETE("/applications/:appID", services.DeleteApplication)
    72  	router.POST("/register", services.RegisterDevice)
    73  	router.GET("/bootstrap/:activationCode", services.BootstrapDevice)
    74  
    75  	router.POST("/pair", services.Pair)
    76  	router.GET("/discover/:serviceName", services.DiscoverService)
    77  	router.POST("/connect/:activationCode", services.ConnectDevice)
    78  	router.DELETE("/devices/:name", services.DeleteDeviceService)
    79  }
    80  

View as plain text