github.com/kaydxh/golang@v0.0.131/pkg/proxy/proxy_test.go (about) 1 /* 2 *Copyright (c) 2022, kaydxh 3 * 4 *Permission is hereby granted, free of charge, to any person obtaining a copy 5 *of this software and associated documentation files (the "Software"), to deal 6 *in the Software without restriction, including without limitation the rights 7 *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 *copies of the Software, and to permit persons to whom the Software is 9 *furnished to do so, subject to the following conditions: 10 * 11 *The above copyright notice and this permission notice shall be included in all 12 *copies or substantial portions of the Software. 13 * 14 *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 *SOFTWARE. 21 */ 22 package proxy_test 23 24 import ( 25 "testing" 26 27 "github.com/gin-gonic/gin" 28 proxy_ "github.com/kaydxh/golang/pkg/proxy" 29 ) 30 31 func TestNewProxy(t *testing.T) { 32 type args struct { 33 router gin.IRouter 34 options []proxy_.ProxyOption 35 } 36 r := gin.Default() 37 tests := []struct { 38 name string 39 args args 40 want *proxy_.Proxy 41 wantErr bool 42 }{ 43 // TODO: Add test cases. 44 { 45 name: "proxy", 46 args: args{ 47 router: r, 48 options: []proxy_.ProxyOption{ 49 proxy_.WithProxyTargetResolverFunc( 50 func(c *gin.Context) (string, error) { 51 return "127.0.0.1:8081", nil 52 }, 53 ), 54 // proxy_.WithProxyMode(proxy_.Redirect_ProxyMode), 55 }, 56 }, 57 wantErr: false, 58 }, 59 } 60 for _, tt := range tests { 61 t.Run(tt.name, func(t *testing.T) { 62 proxy, err := proxy_.NewProxy(tt.args.router, tt.args.options...) 63 if (err != nil) != tt.wantErr { 64 t.Errorf("NewProxy() error = %v, wantErr %v", err, tt.wantErr) 65 return 66 } 67 68 // Use attaches a global middleware to the router. ie. the middleware attached though Use() will be 69 // included in the handlers chain for every single request. Even 404, 405, static files... 70 // For example, this is the right place for a logger or error management middleware. 71 r.Use(proxy.ProxyHandler()) 72 r.GET("/ping", func(c *gin.Context) { 73 c.JSON(200, gin.H{ 74 "message": "pong", 75 }) 76 }) 77 r.Run() 78 }) 79 } 80 }