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)
+			}
+		})
+	}
+}