summaryrefslogtreecommitdiffstats
path: root/msb2pilot/src/msb2pilot/pilot/msb_test.go
blob: e3cf7adc7105e1ea8fcf0b149f50f9a7cea19fec (plain)
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)
		}
	}
}