mosn

Форк
0
/
http_headers_route_test.go 
102 строки · 3.7 Кб
1
//go:build MOSNTest
2
// +build MOSNTest
3

4
package route
5

6
import (
7
	"testing"
8

9
	. "mosn.io/mosn/test/framework"
10
	"mosn.io/mosn/test/lib"
11
	"mosn.io/mosn/test/lib/http"
12
)
13

14
func TestHTTPRouteMatchHeaderOnly(t *testing.T) {
15
	Scenario(t, "mosn proxy http request only matched header", func() {
16
		_, _ = lib.InitMosn(ConfigHttpRoute, lib.CreateConfig(MockHttpServerConfig))
17
		Case("route success", func() {
18
			client := lib.CreateClient("Http1", &http.HttpClientConfig{
19
				TargetAddr: "127.0.0.1:2046",
20
				Request: &http.RequestConfig{
21
					Header: map[string][]string{
22
						"x-test-route": []string{"paas"},
23
					},
24
				},
25
				Verify: &http.VerifyConfig{
26
					ExpectedStatusCode: 200,
27
				},
28
			})
29
			Verify(client.SyncCall(), Equal, true)
30
		})
31
		Case("route failed", func() {
32
			client := lib.CreateClient("Http1", &http.HttpClientConfig{
33
				TargetAddr: "127.0.0.1:2046",
34
				Verify: &http.VerifyConfig{
35
					ExpectedStatusCode: 404,
36
				},
37
			})
38
			Verify(client.SyncCall(), Equal, true)
39
		})
40
	})
41
}
42

43
const MockHttpServerConfig = `{
44
	"protocol":"Http1",
45
	"config": {
46
		"address": "127.0.0.1:8080"
47
	}
48
}`
49

50
const ConfigHttpRoute = `{
51
        "servers":[
52
                {
53
                        "default_log_path":"stdout",
54
                        "default_log_level": "ERROR",
55
                        "routers": [
56
                                {
57
                                        "router_config_name":"router_to_server",
58
                                        "virtual_hosts":[{
59
                                                "name":"server_hosts",
60
                                                "domains": ["*"],
61
                                                "routers": [
62
                                                        {
63
                                                                "match":{"headers":[{"name":"x-test-route","value":"paas"}]},
64
                                                                "route":{"cluster_name":"server_cluster"}
65
                                                        }
66
                                                ]
67
                                        }]
68
                                }
69
                        ],
70
                        "listeners":[
71
                                {
72
                                        "address":"127.0.0.1:2046",
73
                                        "bind_port": true,
74
                                        "filter_chains": [{
75
                                                "filters": [
76
                                                        {
77
                                                                "type": "proxy",
78
                                                                "config": {
79
                                                                        "downstream_protocol": "Http1",
80
                                                                        "upstream_protocol": "Http1",
81
                                                                        "router_config_name":"router_to_server"
82
                                                                }
83
                                                        }
84
                                                ]
85
                                        }]
86
                                }
87
                        ]
88
                }
89
        ],
90
        "cluster_manager":{
91
                "clusters":[
92
                        {
93
                                "name": "server_cluster",
94
                                "type": "SIMPLE",
95
                                "lb_type": "LB_RANDOM",
96
                                "hosts":[
97
                                        {"address":"127.0.0.1:8080"}
98
                                ]
99
                        }
100
                ]
101
        }
102
}`
103

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.