|
@@ -5,15 +5,10 @@
|
|
|
package template // import "miniflux.app/template"
|
|
package template // import "miniflux.app/template"
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
- "net/http"
|
|
|
|
|
- "os"
|
|
|
|
|
"testing"
|
|
"testing"
|
|
|
"time"
|
|
"time"
|
|
|
|
|
|
|
|
- "miniflux.app/config"
|
|
|
|
|
"miniflux.app/locale"
|
|
"miniflux.app/locale"
|
|
|
-
|
|
|
|
|
- "github.com/gorilla/mux"
|
|
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
func TestDict(t *testing.T) {
|
|
func TestDict(t *testing.T) {
|
|
@@ -131,236 +126,6 @@ func TestElapsedTime(t *testing.T) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func TestProxyFilterWithHttpDefault(t *testing.T) {
|
|
|
|
|
- os.Clearenv()
|
|
|
|
|
- os.Setenv("PROXY_IMAGES", "http-only")
|
|
|
|
|
-
|
|
|
|
|
- var err error
|
|
|
|
|
- parser := config.NewParser()
|
|
|
|
|
- config.Opts, err = parser.ParseEnvironmentVariables()
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- t.Fatalf(`Parsing failure: %v`, err)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- r := mux.NewRouter()
|
|
|
|
|
- r.HandleFunc("/proxy/{encodedURL}", func(w http.ResponseWriter, r *http.Request) {}).Name("proxy")
|
|
|
|
|
-
|
|
|
|
|
- input := `<p><img src="http://website/folder/image.png" alt="Test"/></p>`
|
|
|
|
|
- output := imageProxyFilter(r, input)
|
|
|
|
|
- expected := `<p><img src="/proxy/aHR0cDovL3dlYnNpdGUvZm9sZGVyL2ltYWdlLnBuZw==" alt="Test"/></p>`
|
|
|
|
|
-
|
|
|
|
|
- if expected != output {
|
|
|
|
|
- t.Errorf(`Not expected output: got "%s" instead of "%s"`, output, expected)
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-func TestProxyFilterWithHttpsDefault(t *testing.T) {
|
|
|
|
|
- os.Clearenv()
|
|
|
|
|
- os.Setenv("PROXY_IMAGES", "http-only")
|
|
|
|
|
-
|
|
|
|
|
- var err error
|
|
|
|
|
- parser := config.NewParser()
|
|
|
|
|
- config.Opts, err = parser.ParseEnvironmentVariables()
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- t.Fatalf(`Parsing failure: %v`, err)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- r := mux.NewRouter()
|
|
|
|
|
- r.HandleFunc("/proxy/{encodedURL}", func(w http.ResponseWriter, r *http.Request) {}).Name("proxy")
|
|
|
|
|
-
|
|
|
|
|
- input := `<p><img src="https://website/folder/image.png" alt="Test"/></p>`
|
|
|
|
|
- output := imageProxyFilter(r, input)
|
|
|
|
|
- expected := `<p><img src="https://website/folder/image.png" alt="Test"/></p>`
|
|
|
|
|
-
|
|
|
|
|
- if expected != output {
|
|
|
|
|
- t.Errorf(`Not expected output: got "%s" instead of "%s"`, output, expected)
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-func TestProxyFilterWithHttpNever(t *testing.T) {
|
|
|
|
|
- os.Clearenv()
|
|
|
|
|
- os.Setenv("PROXY_IMAGES", "none")
|
|
|
|
|
-
|
|
|
|
|
- var err error
|
|
|
|
|
- parser := config.NewParser()
|
|
|
|
|
- config.Opts, err = parser.ParseEnvironmentVariables()
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- t.Fatalf(`Parsing failure: %v`, err)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- r := mux.NewRouter()
|
|
|
|
|
- r.HandleFunc("/proxy/{encodedURL}", func(w http.ResponseWriter, r *http.Request) {}).Name("proxy")
|
|
|
|
|
-
|
|
|
|
|
- input := `<p><img src="http://website/folder/image.png" alt="Test"/></p>`
|
|
|
|
|
- output := imageProxyFilter(r, input)
|
|
|
|
|
- expected := input
|
|
|
|
|
-
|
|
|
|
|
- if expected != output {
|
|
|
|
|
- t.Errorf(`Not expected output: got "%s" instead of "%s"`, output, expected)
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-func TestProxyFilterWithHttpsNever(t *testing.T) {
|
|
|
|
|
- os.Clearenv()
|
|
|
|
|
- os.Setenv("PROXY_IMAGES", "none")
|
|
|
|
|
-
|
|
|
|
|
- var err error
|
|
|
|
|
- parser := config.NewParser()
|
|
|
|
|
- config.Opts, err = parser.ParseEnvironmentVariables()
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- t.Fatalf(`Parsing failure: %v`, err)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- r := mux.NewRouter()
|
|
|
|
|
- r.HandleFunc("/proxy/{encodedURL}", func(w http.ResponseWriter, r *http.Request) {}).Name("proxy")
|
|
|
|
|
-
|
|
|
|
|
- input := `<p><img src="https://website/folder/image.png" alt="Test"/></p>`
|
|
|
|
|
- output := imageProxyFilter(r, input)
|
|
|
|
|
- expected := input
|
|
|
|
|
-
|
|
|
|
|
- if expected != output {
|
|
|
|
|
- t.Errorf(`Not expected output: got "%s" instead of "%s"`, output, expected)
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-func TestProxyFilterWithHttpAlways(t *testing.T) {
|
|
|
|
|
- os.Clearenv()
|
|
|
|
|
- os.Setenv("PROXY_IMAGES", "all")
|
|
|
|
|
-
|
|
|
|
|
- var err error
|
|
|
|
|
- parser := config.NewParser()
|
|
|
|
|
- config.Opts, err = parser.ParseEnvironmentVariables()
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- t.Fatalf(`Parsing failure: %v`, err)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- r := mux.NewRouter()
|
|
|
|
|
- r.HandleFunc("/proxy/{encodedURL}", func(w http.ResponseWriter, r *http.Request) {}).Name("proxy")
|
|
|
|
|
-
|
|
|
|
|
- input := `<p><img src="http://website/folder/image.png" alt="Test"/></p>`
|
|
|
|
|
- output := imageProxyFilter(r, input)
|
|
|
|
|
- expected := `<p><img src="/proxy/aHR0cDovL3dlYnNpdGUvZm9sZGVyL2ltYWdlLnBuZw==" alt="Test"/></p>`
|
|
|
|
|
-
|
|
|
|
|
- if expected != output {
|
|
|
|
|
- t.Errorf(`Not expected output: got "%s" instead of "%s"`, output, expected)
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-func TestProxyFilterWithHttpsAlways(t *testing.T) {
|
|
|
|
|
- os.Clearenv()
|
|
|
|
|
- os.Setenv("PROXY_IMAGES", "all")
|
|
|
|
|
-
|
|
|
|
|
- var err error
|
|
|
|
|
- parser := config.NewParser()
|
|
|
|
|
- config.Opts, err = parser.ParseEnvironmentVariables()
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- t.Fatalf(`Parsing failure: %v`, err)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- r := mux.NewRouter()
|
|
|
|
|
- r.HandleFunc("/proxy/{encodedURL}", func(w http.ResponseWriter, r *http.Request) {}).Name("proxy")
|
|
|
|
|
-
|
|
|
|
|
- input := `<p><img src="https://website/folder/image.png" alt="Test"/></p>`
|
|
|
|
|
- output := imageProxyFilter(r, input)
|
|
|
|
|
- expected := `<p><img src="/proxy/aHR0cHM6Ly93ZWJzaXRlL2ZvbGRlci9pbWFnZS5wbmc=" alt="Test"/></p>`
|
|
|
|
|
-
|
|
|
|
|
- if expected != output {
|
|
|
|
|
- t.Errorf(`Not expected output: got "%s" instead of "%s"`, output, expected)
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-func TestProxyFilterWithHttpInvalid(t *testing.T) {
|
|
|
|
|
- os.Clearenv()
|
|
|
|
|
- os.Setenv("PROXY_IMAGES", "invalid")
|
|
|
|
|
-
|
|
|
|
|
- var err error
|
|
|
|
|
- parser := config.NewParser()
|
|
|
|
|
- config.Opts, err = parser.ParseEnvironmentVariables()
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- t.Fatalf(`Parsing failure: %v`, err)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- r := mux.NewRouter()
|
|
|
|
|
- r.HandleFunc("/proxy/{encodedURL}", func(w http.ResponseWriter, r *http.Request) {}).Name("proxy")
|
|
|
|
|
-
|
|
|
|
|
- input := `<p><img src="http://website/folder/image.png" alt="Test"/></p>`
|
|
|
|
|
- output := imageProxyFilter(r, input)
|
|
|
|
|
- expected := `<p><img src="/proxy/aHR0cDovL3dlYnNpdGUvZm9sZGVyL2ltYWdlLnBuZw==" alt="Test"/></p>`
|
|
|
|
|
-
|
|
|
|
|
- if expected != output {
|
|
|
|
|
- t.Errorf(`Not expected output: got "%s" instead of "%s"`, output, expected)
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-func TestProxyFilterWithHttpsInvalid(t *testing.T) {
|
|
|
|
|
- os.Clearenv()
|
|
|
|
|
- os.Setenv("PROXY_IMAGES", "invalid")
|
|
|
|
|
-
|
|
|
|
|
- var err error
|
|
|
|
|
- parser := config.NewParser()
|
|
|
|
|
- config.Opts, err = parser.ParseEnvironmentVariables()
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- t.Fatalf(`Parsing failure: %v`, err)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- r := mux.NewRouter()
|
|
|
|
|
- r.HandleFunc("/proxy/{encodedURL}", func(w http.ResponseWriter, r *http.Request) {}).Name("proxy")
|
|
|
|
|
-
|
|
|
|
|
- input := `<p><img src="https://website/folder/image.png" alt="Test"/></p>`
|
|
|
|
|
- output := imageProxyFilter(r, input)
|
|
|
|
|
- expected := `<p><img src="https://website/folder/image.png" alt="Test"/></p>`
|
|
|
|
|
-
|
|
|
|
|
- if expected != output {
|
|
|
|
|
- t.Errorf(`Not expected output: got "%s" instead of "%s"`, output, expected)
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-func TestProxyFilterWithSrcset(t *testing.T) {
|
|
|
|
|
- os.Clearenv()
|
|
|
|
|
- os.Setenv("PROXY_IMAGES", "all")
|
|
|
|
|
-
|
|
|
|
|
- var err error
|
|
|
|
|
- parser := config.NewParser()
|
|
|
|
|
- config.Opts, err = parser.ParseEnvironmentVariables()
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- t.Fatalf(`Parsing failure: %v`, err)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- r := mux.NewRouter()
|
|
|
|
|
- r.HandleFunc("/proxy/{encodedURL}", func(w http.ResponseWriter, r *http.Request) {}).Name("proxy")
|
|
|
|
|
-
|
|
|
|
|
- input := `<p><img src="http://website/folder/image.png" srcset="http://website/folder/image2.png 656w, http://website/folder/image3.png 360w" alt="test"></p>`
|
|
|
|
|
- expected := `<p><img src="/proxy/aHR0cDovL3dlYnNpdGUvZm9sZGVyL2ltYWdlLnBuZw==" srcset="/proxy/aHR0cDovL3dlYnNpdGUvZm9sZGVyL2ltYWdlMi5wbmc= 656w, /proxy/aHR0cDovL3dlYnNpdGUvZm9sZGVyL2ltYWdlMy5wbmc= 360w" alt="test"/></p>`
|
|
|
|
|
- output := imageProxyFilter(r, input)
|
|
|
|
|
-
|
|
|
|
|
- if expected != output {
|
|
|
|
|
- t.Errorf(`Not expected output: got %s`, output)
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-func TestProxyFilterWithPictureSource(t *testing.T) {
|
|
|
|
|
- os.Clearenv()
|
|
|
|
|
- os.Setenv("PROXY_IMAGES", "all")
|
|
|
|
|
-
|
|
|
|
|
- var err error
|
|
|
|
|
- parser := config.NewParser()
|
|
|
|
|
- config.Opts, err = parser.ParseEnvironmentVariables()
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- t.Fatalf(`Parsing failure: %v`, err)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- r := mux.NewRouter()
|
|
|
|
|
- r.HandleFunc("/proxy/{encodedURL}", func(w http.ResponseWriter, r *http.Request) {}).Name("proxy")
|
|
|
|
|
-
|
|
|
|
|
- input := `<picture><source srcset="http://website/folder/image2.png 656w, http://website/folder/image3.png 360w"></picture>`
|
|
|
|
|
- expected := `<picture><source srcset="/proxy/aHR0cDovL3dlYnNpdGUvZm9sZGVyL2ltYWdlMi5wbmc= 656w, /proxy/aHR0cDovL3dlYnNpdGUvZm9sZGVyL2ltYWdlMy5wbmc= 360w"/></picture>`
|
|
|
|
|
- output := imageProxyFilter(r, input)
|
|
|
|
|
-
|
|
|
|
|
- if expected != output {
|
|
|
|
|
- t.Errorf(`Not expected output: got %s`, output)
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
func TestFormatFileSize(t *testing.T) {
|
|
func TestFormatFileSize(t *testing.T) {
|
|
|
scenarios := []struct {
|
|
scenarios := []struct {
|
|
|
input int64
|
|
input int64
|