Add tests for Last.fm controller
This commit is contained in:
@@ -0,0 +1,46 @@
|
|||||||
|
defmodule MusicLibraryWeb.LastFmControllerTest do
|
||||||
|
use MusicLibraryWeb.ConnCase
|
||||||
|
|
||||||
|
describe "GET /auth/last_fm/callback" do
|
||||||
|
@tag :logged_out
|
||||||
|
test "on success, stores session key and redirects with flash", %{conn: conn} do
|
||||||
|
session_xml = """
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<lfm status="ok">
|
||||||
|
<session>
|
||||||
|
<name>testuser</name>
|
||||||
|
<key>test-session-key</key>
|
||||||
|
<subscriber>0</subscriber>
|
||||||
|
</session>
|
||||||
|
</lfm>
|
||||||
|
"""
|
||||||
|
|
||||||
|
Req.Test.stub(LastFm.API, fn conn ->
|
||||||
|
Req.Test.text(conn, session_xml)
|
||||||
|
end)
|
||||||
|
|
||||||
|
conn = get(conn, ~p"/auth/last_fm/callback", %{"token" => "test-token"})
|
||||||
|
|
||||||
|
assert redirected_to(conn) == "/"
|
||||||
|
assert conn.assigns.flash["info"] =~ "Successfully connected"
|
||||||
|
end
|
||||||
|
|
||||||
|
@tag :logged_out
|
||||||
|
@tag :capture_log
|
||||||
|
test "on error, redirects with error flash", %{conn: conn} do
|
||||||
|
error_json = %{
|
||||||
|
"error" => 4,
|
||||||
|
"message" => "Invalid authentication token"
|
||||||
|
}
|
||||||
|
|
||||||
|
Req.Test.stub(LastFm.API, fn conn ->
|
||||||
|
Req.Test.json(conn, error_json)
|
||||||
|
end)
|
||||||
|
|
||||||
|
conn = get(conn, ~p"/auth/last_fm/callback", %{"token" => "bad-token"})
|
||||||
|
|
||||||
|
assert redirected_to(conn) == "/"
|
||||||
|
assert conn.assigns.flash["error"] =~ "Failed to connect"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user