Support client v0.9.8 in new upload endpoint

ex-upload
Marcin Kulik 7 years ago
parent 515d486309
commit 9d7a7d455b

@ -50,9 +50,10 @@ defmodule Asciinema.Asciicasts do
def create_asciicast(user, %{"meta" => attrs,
"stdout" => %Plug.Upload{filename: d_filename} = data,
"stdout_timing" => %Plug.Upload{filename: t_filename} = timing}, _user_agent) do
"stdout_timing" => %Plug.Upload{filename: t_filename} = timing}, user_agent) do
attrs = Map.put(attrs, "version", 0)
asciicast = %Asciicast{user_id: user.id,
user_agent: unless(attrs["uname"], do: user_agent),
stdout_data: d_filename,
stdout_timing: t_filename,
private: user.asciicasts_private_by_default}

@ -3,7 +3,7 @@ defmodule Asciinema.AsciicastsTest do
alias Asciinema.Asciicasts
describe "create_asciicast/2" do
test "json file, v0 format, <= v0.9.7 client" do
test "json file, v0 format with uname" do
user = fixture(:user)
params = %{"meta" => %{"command" => "/bin/bash",
"duration" => 11.146430015564,
@ -35,6 +35,37 @@ defmodule Asciinema.AsciicastsTest do
assert asciicast.user_agent == nil
end
test "json file, v0 format without uname" do
user = fixture(:user)
params = %{"meta" => %{"command" => "/bin/bash",
"duration" => 11.146430015564,
"shell" => "/bin/zsh",
"terminal_columns" => 96,
"terminal_lines" => 26,
"terminal_type" => "screen-256color",
"title" => "bashing :)"},
"stdout" => fixture(:upload, %{path: "0.9.8/stdout",
content_type: "application/octet-stream"}),
"stdout_timing" => fixture(:upload, %{path: "0.9.8/stdout.time",
content_type: "application/octet-stream"})}
{:ok, asciicast} = Asciicasts.create_asciicast(user, params, "a/user/agent")
assert asciicast.version == 0
assert asciicast.file == nil
assert asciicast.stdout_data == "stdout"
assert asciicast.stdout_timing == "stdout.time"
assert asciicast.command == "/bin/bash"
assert asciicast.duration == 11.146430015564
assert asciicast.shell == "/bin/zsh"
assert asciicast.terminal_type == "screen-256color"
assert asciicast.terminal_columns == 96
assert asciicast.terminal_lines == 26
assert asciicast.title == "bashing :)"
assert asciicast.uname == nil
assert asciicast.user_agent == "a/user/agent"
end
test "json file, v1 format" do
user = fixture(:user)
upload = fixture(:upload, %{path: "1/asciicast.json"})

@ -31,6 +31,20 @@ defmodule Asciinema.Api.AsciicastControllerTest do
assert List.first(get_resp_header(conn, "location")) =~ @asciicast_url
end
@tag token: nil
test "separate files (pre-v1 params), v0.9.8 client", %{conn: conn} do
asciicast = %{"meta" => fixture(:upload, %{path: "0.9.8/meta.json",
content_type: "application/json"}),
"stdout" => fixture(:upload, %{path: "0.9.8/stdout",
content_type: "application/octet-stream"}),
"stdout_timing" => fixture(:upload, %{path: "0.9.8/stdout.time",
content_type: "application/octet-stream"})}
conn = post conn, api_asciicast_path(conn, :create), %{"asciicast" => asciicast}
assert text_response(conn, 201) =~ @asciicast_url
assert List.first(get_resp_header(conn, "location")) =~ @asciicast_url
end
test "json file, v1 format", %{conn: conn} do
upload = fixture(:upload, %{path: "1/asciicast.json"})
conn = post conn, api_asciicast_path(conn, :create), %{"asciicast" => upload}

Loading…
Cancel
Save