mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			35 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
| package pluginscdn
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/stretchr/testify/require"
 | |
| )
 | |
| 
 | |
| func TestURLConstructor_StringURLFor(t *testing.T) {
 | |
| 	uc := URLConstructor{
 | |
| 		cdnURLTemplate: "https://the.cdn/{id}/{version}/{assetPath}",
 | |
| 		pluginID:       "the-plugin",
 | |
| 		pluginVersion:  "0.1",
 | |
| 	}
 | |
| 	type tc struct {
 | |
| 		name string
 | |
| 		path string
 | |
| 		exp  string
 | |
| 	}
 | |
| 	for _, c := range []tc{
 | |
| 		{"simple", "file.txt", "https://the.cdn/the-plugin/0.1/file.txt"},
 | |
| 		{"multiple", "some/path/to/file.txt", "https://the.cdn/the-plugin/0.1/some/path/to/file.txt"},
 | |
| 		{"path traversal", "some/../to/file.txt", "https://the.cdn/the-plugin/0.1/to/file.txt"},
 | |
| 		{"above root", "../../../../../file.txt", "https://the.cdn/the-plugin/0.1/file.txt"},
 | |
| 		{"multiple slashes", "some/////file.txt", "https://the.cdn/the-plugin/0.1/some/file.txt"},
 | |
| 		{"dots", "some/././././file.txt", "https://the.cdn/the-plugin/0.1/some/file.txt"},
 | |
| 	} {
 | |
| 		t.Run(c.name, func(t *testing.T) {
 | |
| 			u, err := uc.StringPath(c.path)
 | |
| 			require.NoError(t, err)
 | |
| 			require.Equal(t, c.exp, u)
 | |
| 		})
 | |
| 	}
 | |
| }
 |