131 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package micro
 | 
						|
 | 
						|
import (
 | 
						|
	"testing"
 | 
						|
)
 | 
						|
 | 
						|
func TestApiRoute(t *testing.T) {
 | 
						|
	testData := []struct {
 | 
						|
		path    string
 | 
						|
		service string
 | 
						|
		method  string
 | 
						|
	}{
 | 
						|
		{
 | 
						|
			"/foo/bar",
 | 
						|
			"foo",
 | 
						|
			"Foo.Bar",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"/foo/foo/bar",
 | 
						|
			"foo",
 | 
						|
			"Foo.Bar",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"/foo/bar/baz",
 | 
						|
			"foo",
 | 
						|
			"Bar.Baz",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"/foo/bar/baz-xyz",
 | 
						|
			"foo",
 | 
						|
			"Bar.BazXyz",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"/foo/bar/baz/cat",
 | 
						|
			"foo.bar",
 | 
						|
			"Baz.Cat",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"/foo/bar/baz/cat/car",
 | 
						|
			"foo.bar.baz",
 | 
						|
			"Cat.Car",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"/foo/fooBar/bazCat",
 | 
						|
			"foo",
 | 
						|
			"FooBar.BazCat",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"/v1/foo/bar",
 | 
						|
			"v1.foo",
 | 
						|
			"Foo.Bar",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"/v1/foo/bar/baz",
 | 
						|
			"v1.foo",
 | 
						|
			"Bar.Baz",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"/v1/foo/bar/baz/cat",
 | 
						|
			"v1.foo.bar",
 | 
						|
			"Baz.Cat",
 | 
						|
		},
 | 
						|
	}
 | 
						|
 | 
						|
	for _, d := range testData {
 | 
						|
		s, m := apiRoute(d.path)
 | 
						|
		if d.service != s {
 | 
						|
			t.Fatalf("Expected service: %s for path: %s got: %s %s", d.service, d.path, s, m)
 | 
						|
		}
 | 
						|
		if d.method != m {
 | 
						|
			t.Fatalf("Expected service: %s for path: %s got: %s", d.method, d.path, m)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestProxyRoute(t *testing.T) {
 | 
						|
	testData := []struct {
 | 
						|
		path    string
 | 
						|
		service string
 | 
						|
	}{
 | 
						|
		// no namespace
 | 
						|
		{
 | 
						|
			"/f",
 | 
						|
			"f",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"/f",
 | 
						|
			"f",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"/f-b",
 | 
						|
			"f-b",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"/foo/bar",
 | 
						|
			"foo",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"/foo-bar",
 | 
						|
			"foo-bar",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"/foo-bar-baz",
 | 
						|
			"foo-bar-baz",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"/foo/bar/bar",
 | 
						|
			"foo",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"/v1/foo/bar",
 | 
						|
			"v1.foo",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"/v1/foo/bar/baz",
 | 
						|
			"v1.foo",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			"/v1/foo/bar/baz/cat",
 | 
						|
			"v1.foo",
 | 
						|
		},
 | 
						|
	}
 | 
						|
 | 
						|
	for _, d := range testData {
 | 
						|
		s := proxyRoute(d.path)
 | 
						|
		if d.service != s {
 | 
						|
			t.Fatalf("Expected service: %s for path: %s got: %s", d.service, d.path, s)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |