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  }