| defmodule PlausibleWeb.AvatarControllerTest do | |
| use PlausibleWeb.ConnCase, async: true | |
| import Mox | |
| setup :verify_on_exit! | |
| setup {PlausibleWeb.FirstLaunchPlug.Test, :skip} | |
| describe "GET /avatar/:hash" do | |
| test "proxies the request to gravatar", %{conn: conn} do | |
| expect( | |
| Plausible.HTTPClient.Mock, | |
| :get, | |
| fn "https://www.gravatar.com/avatar/myhash?s=150&d=identicon" -> | |
| {:ok, | |
| %Finch.Response{ | |
| status: 200, | |
| body: "avatar response body", | |
| headers: [ | |
| {"content-type", "image/png"}, | |
| {"cache-control", "max-age=300"}, | |
| {"expires", "soon"} | |
| ] | |
| }} | |
| end | |
| ) | |
| conn = get(conn, "/avatar/myhash") | |
| assert response(conn, 200) =~ "avatar response body" | |
| assert {"content-type", "image/png"} in conn.resp_headers | |
| assert {"cache-control", "max-age=300"} in conn.resp_headers | |
| assert {"expires", "soon"} in conn.resp_headers | |
| end | |
| end | |
| end | |