github.com/viant/toolbox@v0.34.5/uri_test.go (about) 1 package toolbox_test 2 3 import ( 4 "github.com/stretchr/testify/assert" 5 "github.com/viant/toolbox" 6 "github.com/viant/toolbox/url" 7 "testing" 8 ) 9 10 func TestExtractURIParameters(t *testing.T) { 11 12 { 13 parameters, matched := toolbox.ExtractURIParameters("/v1/path/{app}/{version}/", "/v1/path/app/1.0/?v=12") 14 assert.True(t, matched) 15 if !matched { 16 t.FailNow() 17 } 18 assert.Equal(t, 2, len(parameters)) 19 assert.Equal(t, "app", parameters["app"]) 20 assert.Equal(t, "1.0", parameters["version"]) 21 } 22 23 { 24 parameters, matched := toolbox.ExtractURIParameters("/v1/path/{ids}/{sub}/a/{name}", "/v1/path/1,2,3,4,5/subpath/a/abc") 25 assert.True(t, matched) 26 assert.Equal(t, 3, len(parameters)) 27 assert.Equal(t, "1,2,3,4,5", parameters["ids"]) 28 assert.Equal(t, "subpath", parameters["sub"]) 29 assert.Equal(t, "abc", parameters["name"]) 30 } 31 32 { 33 parameters, matched := toolbox.ExtractURIParameters("/v1/path/{ids}", "/v1/path/this-is-test") 34 assert.True(t, matched) 35 assert.Equal(t, 1, len(parameters)) 36 assert.Equal(t, "this-is-test", parameters["ids"]) 37 } 38 39 { 40 _, matched := toolbox.ExtractURIParameters("/v2/path/{ids}/{sub}/a/{name}", "/v1/path/1,2,3,4,5/subpath/a/abc") 41 assert.False(t, matched) 42 43 } 44 { 45 _, matched := toolbox.ExtractURIParameters("/v1/path1/{ids}/{sub}/a/{name}", "/v1/path/1,2,3,4,5/subpath/a/abc") 46 assert.False(t, matched) 47 48 } 49 50 { 51 _, matched := toolbox.ExtractURIParameters("/v1/path1/{ids}/{sub}/a/{name}", "/v1/path/1,2,3,4,5/subpath/a/abc") 52 assert.False(t, matched) 53 } 54 55 { 56 _, matched := toolbox.ExtractURIParameters("/v1/path/{ids}", "/v1/path/1") 57 assert.True(t, matched) 58 } 59 60 { 61 _, matched := toolbox.ExtractURIParameters("/v1/reverse/", "/v1/reverse/") 62 assert.True(t, matched) 63 } 64 65 { 66 parameters, matched := toolbox.ExtractURIParameters("/v1/path/{ids}/{sub}/a/{name}", "/v1/path/1,2,3,4,5/subpath/a/abcwrwr") 67 assert.True(t, matched) 68 assert.Equal(t, 3, len(parameters)) 69 assert.Equal(t, "1,2,3,4,5", parameters["ids"]) 70 assert.Equal(t, "subpath", parameters["sub"]) 71 assert.Equal(t, "abcwrwr", parameters["name"]) 72 } 73 74 } 75 76 func TestURLBase(t *testing.T) { 77 78 URL := "http://github.com/abc" 79 baseURL := toolbox.URLBase(URL) 80 assert.Equal(t, "http://github.com", baseURL) 81 82 } 83 84 func TestURLSplit(t *testing.T) { 85 86 { 87 URL := "http://github.com/abc/trter/rds" 88 parentURL, resource := toolbox.URLSplit(URL) 89 assert.Equal(t, "http://github.com/abc/trter", parentURL) 90 assert.Equal(t, "rds", resource) 91 } 92 93 } 94 95 func TestURLStripPath(t *testing.T) { 96 { 97 URL := "http://github.com/abc" 98 assert.EqualValues(t, "http://github.com", toolbox.URLStripPath(URL)) 99 } 100 { 101 URL := "http://github.com" 102 assert.EqualValues(t, "http://github.com", toolbox.URLStripPath(URL)) 103 } 104 } 105 106 func TestURL_Rename(t *testing.T) { 107 { 108 URL := "http://github.com/abc/" 109 resource := url.NewResource(URL) 110 resource.Rename("/tmp/abc") 111 assert.Equal(t, "http://github.com//tmp/abc", resource.URL) 112 113 } 114 115 } 116 117 func TestURLPathJoin(t *testing.T) { 118 119 { 120 URL := "http://github.com/abc" 121 assert.EqualValues(t, "http://github.com/abc/path/a.txt", toolbox.URLPathJoin(URL, "path/a.txt")) 122 } 123 { 124 URL := "http://github.com/abc/" 125 assert.EqualValues(t, "http://github.com/abc/path/a.txt", toolbox.URLPathJoin(URL, "path/a.txt")) 126 } 127 { 128 URL := "http://github.com/abc/" 129 assert.EqualValues(t, "http://github.com/a.txt", toolbox.URLPathJoin(URL, "/a.txt")) 130 } 131 }