diff --git a/pkg/files/file_test.go b/pkg/files/file_test.go new file mode 100644 index 0000000000000000000000000000000000000000..7c74c5df1b58eeade1ede9c068cb10337b4a5b58 --- /dev/null +++ b/pkg/files/file_test.go @@ -0,0 +1,57 @@ +package files + +import ( + "testing" + "text/template" + + "github.com/stretchr/testify/require" +) + +func TestFile_SetURLWithTemplate(t *testing.T) { + tests := []struct { + name string + file *File + template *template.Template + wantErr bool + wantURL string + }{ + { + name: "template is nil", + file: &File{ + URL: "https://cloud.com/", + }, + template: nil, + wantErr: false, + wantURL: "https://cloud.com/", + }, + { + name: "template is bad", + file: &File{}, + template: template.Must(template.New("url").Parse("{{.NonExistentField}}")), + wantErr: true, + }, + { + name: "success", + file: &File{ + Size: 1024, + MimeType: "image/png", + Key: "file-key", + }, + template: template.Must(template.New("url").Parse("https://cloud-proxy.com/{{.Key}}?size={{.Size}}#{{.MimeType}}")), + wantErr: false, + wantURL: "https://cloud-proxy.com/file-key?size=1024#image/png", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := tt.file.SetURLWithTemplate(tt.template) + if tt.wantErr { + require.Error(t, err) + } else { + require.NoError(t, err) + require.Equal(t, tt.wantURL, tt.file.URL) + } + }) + } +}