1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
package restful
import (
"testing"
"time"
)
func TestRouteBuilder_PathParameter(t *testing.T) {
p := &Parameter{&ParameterData{Name: "name", Description: "desc"}}
p.AllowMultiple(true)
p.DataType("int")
p.Required(true)
values := []string{"a"}
p.PossibleValues(values)
p.bePath()
b := new(RouteBuilder)
b.function = dummy
b.Param(p)
r := b.Build()
if !r.ParameterDocs[0].Data().AllowMultiple {
t.Error("AllowMultiple invalid")
}
if r.ParameterDocs[0].Data().DataType != "int" {
t.Error("dataType invalid")
}
if !r.ParameterDocs[0].Data().Required {
t.Error("required invalid")
}
if r.ParameterDocs[0].Data().Kind != PathParameterKind {
t.Error("kind invalid")
}
if r.ParameterDocs[0].Data().PossibleValues[0] != "a" {
t.Error("PossibleValues invalid")
}
if b.ParameterNamed("name") == nil {
t.Error("access to parameter failed")
}
}
func TestRouteBuilder(t *testing.T) {
json := "application/json"
b := new(RouteBuilder)
b.To(dummy)
b.Path("/routes").
Method("HEAD").
Consumes(json).
Produces(json).
Metadata("test", "test-value").
AddExtension("x-restful-test", "test-value").
DefaultReturns("default", time.Now())
r := b.Build()
if r.Path != "/routes" {
t.Error("path invalid")
}
if r.Produces[0] != json {
t.Error("produces invalid")
}
if r.Consumes[0] != json {
t.Error("consumes invalid")
}
if r.Operation != "dummy" {
t.Error("Operation not set")
}
if r.Metadata["test"] != "test-value" {
t.Errorf("Metadata not set")
}
if r.Extensions["x-restful-test"] != "test-value" {
t.Errorf("Extensions not set")
}
if r.DefaultResponse == nil {
t.Fatal("expected default response")
}
if r.hasCustomVerb {
t.Errorf("hasCustomVerb should not be true")
}
customVerbRoute := new(RouteBuilder)
customVerbRoute.To(dummy)
customVerbRoute.Path("/users:init")
if !customVerbRoute.Build().hasCustomVerb {
t.Errorf("hasCustomVerb should be true")
}
}
func TestAnonymousFuncNaming(t *testing.T) {
f1 := func() {}
f2 := func() {}
if got, want := nameOfFunction(f1), "func1"; got != want {
t.Errorf("got %v want %v", got, want)
}
if got, want := nameOfFunction(f2), "func2"; got != want {
t.Errorf("got %v want %v", got, want)
}
}
func TestContentEncodingEnabled(t *testing.T) {
b := new(RouteBuilder)
b.function = dummy
r := b.Build()
got := r.contentEncodingEnabled
var want *bool // nil
if got != want {
t.Errorf("got %v want %v (default nil)", got, want)
}
// true
b = new(RouteBuilder)
b.function = dummy
b.ContentEncodingEnabled(true)
r = b.Build()
got = r.contentEncodingEnabled
if *got != true {
t.Errorf("got %v want %v (explicit true)", *got, true)
}
// true
b = new(RouteBuilder)
b.function = dummy
b.ContentEncodingEnabled(false)
r = b.Build()
got = r.contentEncodingEnabled
if *got != false {
t.Errorf("got %v want %v (explicit false)", *got, false)
}
}
|