File: route_builder_test.go

package info (click to toggle)
golang-github-emicklei-go-restful 3.10.2-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 792 kB
  • sloc: makefile: 9; sh: 6
file content (131 lines) | stat: -rw-r--r-- 2,895 bytes parent folder | download
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)
	}

}