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
|
/**
* Copyright (c) 2018 ZTE Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and the Apache License 2.0 which both accompany this distribution,
* and are available at http://www.eclipse.org/legal/epl-v10.html
* and http://www.apache.org/licenses/LICENSE-2.0
*
* Contributors:
* ZTE - initial Project
*/
package pilot
import (
"testing"
)
func TestCreateRouteRule(t *testing.T) {
cases := []struct {
sService, sPath, tService, tPath, want string
}{
{ // success demo
sService: "sservice",
sPath: "/",
tService: "tservice",
tPath: "/",
want: `{
"apiVersion": "config.istio.io/v1alpha2",
"kind": "RouteRule",
"metadata": {
"name": "msbcustom.tservice"
},
"spec": {
"destination":{
"name":"sservice"
},
"match":{
"request":{
"headers": {
"uri": {
"prefix": "/"
}
}
}
},
"rewrite": {
"uri": "/"
},
"route":[
{
"destination":{
"name":"tservice"
}
}
]
}
}
`,
},
{ // rule name must consist of lower case alphanuberic charactoers, '-' or '.'. and must start and end with an alphanumberic charactore
sService: "sservice",
sPath: "/",
tService: "123ABCrule-name.test~!@#$%^&*()_+321",
tPath: "/",
want: `{
"apiVersion": "config.istio.io/v1alpha2",
"kind": "RouteRule",
"metadata": {
"name": "msbcustom.123rule-name.test321"
},
"spec": {
"destination":{
"name":"sservice"
},
"match":{
"request":{
"headers": {
"uri": {
"prefix": "/"
}
}
}
},
"rewrite": {
"uri": "/"
},
"route":[
{
"destination":{
"name":"123ABCrule-name.test~!@#$%^&*()_+321"
}
}
]
}
}
`,
},
}
for _, cas := range cases {
got := createRouteRule(cas.sService, cas.sPath, cas.tService, cas.tPath)
if got != cas.want {
t.Errorf("createRouteRule(%s, %s, %s, %s) => got %s, want %s", cas.sService, cas.sPath, cas.tService, cas.tPath, got, cas.want)
}
}
}
|