diff --git a/idicon.go b/idicon.go index 1efda1e..d2f84e9 100644 --- a/idicon.go +++ b/idicon.go @@ -18,7 +18,10 @@ func requestHandler(w http.ResponseWriter, r *http.Request) { size, err := strconv.Atoi(r.URL.Query().Get("s")) if err != nil { - size = 80 + size, err = strconv.Atoi(r.URL.Query().Get("size")) + if err != nil { + size = 80 + } } colorScheme := r.URL.Query().Get("c") diff --git a/idicon_test.go b/idicon_test.go index 08e182f..65f0e04 100644 --- a/idicon_test.go +++ b/idicon_test.go @@ -23,6 +23,9 @@ var gh1 []byte //go:embed testdata/a1d0c6e83f027327d8461063f4ac58a6_gh.png var gh2 []byte +//go:embed testdata/1a79a4d60de6718e8e5b326e338ae533_s40.png +var s40 []byte + func testRouter() *mux.Router { router := mux.NewRouter() router.HandleFunc("/avatar/{id}", requestHandler) @@ -99,6 +102,34 @@ func TestCorrectResponseForAltGHColorSchemeAndPattern(t *testing.T) { } } +func TestCorrectResponseForSParam40(t *testing.T) { + req, err := http.NewRequest("GET", "/avatar/1a79a4d60de6718e8e5b326e338ae533?s=40", nil) + if err != nil { + t.Fatal(err) + } + + rr := httptest.NewRecorder() + testRouter().ServeHTTP(rr, req) + + if !reflect.DeepEqual(rr.Body.Bytes(), s40) { + t.Errorf("returned image does not match expected image") + } +} + +func TestCorrectResponseForSizeParam40(t *testing.T) { + req, err := http.NewRequest("GET", "/avatar/1a79a4d60de6718e8e5b326e338ae533?size=40", nil) + if err != nil { + t.Fatal(err) + } + + rr := httptest.NewRecorder() + testRouter().ServeHTTP(rr, req) + + if !reflect.DeepEqual(rr.Body.Bytes(), s40) { + t.Errorf("returned image does not match expected image") + } +} + func TestUsesConfig(t *testing.T) { configure("./testdata/testconfig.toml") diff --git a/testdata/1a79a4d60de6718e8e5b326e338ae533_s40.png b/testdata/1a79a4d60de6718e8e5b326e338ae533_s40.png new file mode 100644 index 0000000..f73cbfa Binary files /dev/null and b/testdata/1a79a4d60de6718e8e5b326e338ae533_s40.png differ