mirror of
https://github.com/DeBrosOfficial/network.git
synced 2026-01-30 16:13:04 +00:00
136 lines
3.5 KiB
Go
136 lines
3.5 KiB
Go
package gateway
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
)
|
|
|
|
func TestExtractAPIKey(t *testing.T) {
|
|
r := httptest.NewRequest(http.MethodGet, "/", nil)
|
|
r.Header.Set("Authorization", "Bearer ak_foo:ns")
|
|
if got := extractAPIKey(r); got != "ak_foo:ns" {
|
|
t.Fatalf("got %q", got)
|
|
}
|
|
r.Header.Set("Authorization", "ApiKey ak2")
|
|
if got := extractAPIKey(r); got != "ak2" {
|
|
t.Fatalf("got %q", got)
|
|
}
|
|
r.Header.Set("Authorization", "ak3raw")
|
|
if got := extractAPIKey(r); got != "ak3raw" {
|
|
t.Fatalf("got %q", got)
|
|
}
|
|
r.Header = http.Header{}
|
|
r.Header.Set("X-API-Key", "xkey")
|
|
if got := extractAPIKey(r); got != "xkey" {
|
|
t.Fatalf("got %q", got)
|
|
}
|
|
}
|
|
|
|
// TestDomainRoutingMiddleware_NonDebrosNetwork tests that non-debros domains pass through
|
|
func TestDomainRoutingMiddleware_NonDebrosNetwork(t *testing.T) {
|
|
nextCalled := false
|
|
next := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
nextCalled = true
|
|
w.WriteHeader(http.StatusOK)
|
|
})
|
|
|
|
g := &Gateway{}
|
|
middleware := g.domainRoutingMiddleware(next)
|
|
|
|
req := httptest.NewRequest("GET", "/", nil)
|
|
req.Host = "example.com"
|
|
|
|
rr := httptest.NewRecorder()
|
|
middleware.ServeHTTP(rr, req)
|
|
|
|
if !nextCalled {
|
|
t.Error("Expected next handler to be called for non-debros domain")
|
|
}
|
|
|
|
if rr.Code != http.StatusOK {
|
|
t.Errorf("Expected status 200, got %d", rr.Code)
|
|
}
|
|
}
|
|
|
|
// TestDomainRoutingMiddleware_APIPathBypass tests that /v1/ paths bypass routing
|
|
func TestDomainRoutingMiddleware_APIPathBypass(t *testing.T) {
|
|
nextCalled := false
|
|
next := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
nextCalled = true
|
|
w.WriteHeader(http.StatusOK)
|
|
})
|
|
|
|
g := &Gateway{}
|
|
middleware := g.domainRoutingMiddleware(next)
|
|
|
|
req := httptest.NewRequest("GET", "/v1/deployments/list", nil)
|
|
req.Host = "myapp.orama.network"
|
|
|
|
rr := httptest.NewRecorder()
|
|
middleware.ServeHTTP(rr, req)
|
|
|
|
if !nextCalled {
|
|
t.Error("Expected next handler to be called for /v1/ path")
|
|
}
|
|
|
|
if rr.Code != http.StatusOK {
|
|
t.Errorf("Expected status 200, got %d", rr.Code)
|
|
}
|
|
}
|
|
|
|
// TestDomainRoutingMiddleware_WellKnownBypass tests that /.well-known/ paths bypass routing
|
|
func TestDomainRoutingMiddleware_WellKnownBypass(t *testing.T) {
|
|
nextCalled := false
|
|
next := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
nextCalled = true
|
|
w.WriteHeader(http.StatusOK)
|
|
})
|
|
|
|
g := &Gateway{}
|
|
middleware := g.domainRoutingMiddleware(next)
|
|
|
|
req := httptest.NewRequest("GET", "/.well-known/acme-challenge/test", nil)
|
|
req.Host = "myapp.orama.network"
|
|
|
|
rr := httptest.NewRecorder()
|
|
middleware.ServeHTTP(rr, req)
|
|
|
|
if !nextCalled {
|
|
t.Error("Expected next handler to be called for /.well-known/ path")
|
|
}
|
|
|
|
if rr.Code != http.StatusOK {
|
|
t.Errorf("Expected status 200, got %d", rr.Code)
|
|
}
|
|
}
|
|
|
|
// TestDomainRoutingMiddleware_NoDeploymentService tests graceful handling when deployment service is nil
|
|
func TestDomainRoutingMiddleware_NoDeploymentService(t *testing.T) {
|
|
nextCalled := false
|
|
next := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
nextCalled = true
|
|
w.WriteHeader(http.StatusOK)
|
|
})
|
|
|
|
g := &Gateway{
|
|
// deploymentService is nil
|
|
staticHandler: nil,
|
|
}
|
|
middleware := g.domainRoutingMiddleware(next)
|
|
|
|
req := httptest.NewRequest("GET", "/", nil)
|
|
req.Host = "myapp.orama.network"
|
|
|
|
rr := httptest.NewRecorder()
|
|
middleware.ServeHTTP(rr, req)
|
|
|
|
if !nextCalled {
|
|
t.Error("Expected next handler to be called when deployment service is nil")
|
|
}
|
|
|
|
if rr.Code != http.StatusOK {
|
|
t.Errorf("Expected status 200, got %d", rr.Code)
|
|
}
|
|
}
|