gecko/api/router_test.go

70 lines
1.5 KiB
Go

// (c) 2019-2020, Ava Labs, Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package api
import (
"net/http"
"testing"
)
type testHandler struct{}
func (*testHandler) ServeHTTP(_ http.ResponseWriter, _ *http.Request) {}
func TestAliasing(t *testing.T) {
r := newRouter()
if err := r.AddAlias("1", "2", "3"); err != nil {
t.Fatal(err)
}
if err := r.AddAlias("1", "4"); err != nil {
t.Fatal(err)
}
if err := r.AddAlias("5", "1"); err != nil {
t.Fatal(err)
}
if err := r.AddAlias("3", "6"); err != nil {
t.Fatal(err)
}
if err := r.AddAlias("7", "4"); err == nil {
t.Fatalf("Already reserved %s", "4")
}
handler1 := &testHandler{}
if err := r.AddRouter("2", "", handler1); err == nil {
t.Fatalf("Already reserved %s", "2")
}
if err := r.AddRouter("5", "", handler1); err != nil {
t.Fatal(err)
}
if handler, exists := r.routes["5"][""]; !exists {
t.Fatalf("Should have added %s", "5")
} else if handler != handler1 {
t.Fatalf("Registered unknown handler")
}
if err := r.AddAlias("5", "7"); err != nil {
t.Fatal(err)
}
if handler, exists := r.routes["7"][""]; !exists {
t.Fatalf("Should have added %s", "7")
} else if handler != handler1 {
t.Fatalf("Registered unknown handler")
}
}
func TestBlock(t *testing.T) {
r := newRouter()
if err := r.AddAlias("1", "1"); err != nil {
t.Fatal(err)
}
handler1 := &testHandler{}
if err := r.AddRouter("1", "", handler1); err == nil {
t.Fatalf("Permanently locked %s", "1")
}
}