mirror of
				https://github.com/go-micro/go-micro.git
				synced 2025-10-30 23:27:41 +02:00 
			
		
		
		
	
		
			
	
	
		
			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) | ||
|  | 		} | ||
|  | 	} | ||
|  | } |