tutorial mac language framework espaƱol elixir phoenix-framework

elixir - mac - phoenix framework tutorial



Probando una carga de archivos en phoenix/elixir (1)

Coloque un archivo en su directorio de prueba en algún lugar (tal vez test/fixtures ) luego use la estructura Plug.Upload :

upload = %Plug.Upload{path: "test/fixtures/example.png", filename: "example.png"} conn() |> post("/api/v1/originals", %{ :image => upload })

Estoy tratando de probar el controlador que espera una carga de archivos usando el framework phoenix. Seguí la guía de las guías de phoenix ( http://www.phoenixframework.org/docs/file-uploads ) y funciona en el navegador, pero tengo problemas para escribir una prueba. Esto es lo que hice:

test "POST photo" do { :ok, raw_file } = File.read "1528_27.jpg" conn() |> post("/api/v1/originals", %{ :image => raw_file }) # do some assertions end

El problema es que, en el controlador, mi archivo nunca termina como una estructura %Plug.Upload , sino como binario. Así que al probar, mis parámetros en el controlador parecen:

params: %{"image" => <<255, 216, 255, 225, 18, 180, 69, 120, 105, 102, 0, 0, 73, 73, 42, 0, 8, 0, 0, 0, 10, 0, 15, 1, 2, 0, 26, 0, 0, 0, 134, 0, 0, 0, 16, 1, 2, 0, 10, 0, ...>>},

y mi controlador explota cuando intento acceder a params["image"].path . Esto funciona cuando se carga desde el navegador, porque entonces, tengo la estructura de carga esperada en mis parámetros:

params: %{ "image" => %Plug.Upload{ content_type: "image/jpeg", filename: "1528_27.jpg", path: "/var/folders/98/40k7dt2d2sxf6xnkc_627lqc0000gp/T//plug-1448/multipart-280987-612081-2" } },

¿Cómo puedo post un archivo desde una prueba, por lo que obtengo un %Plug.Upload struct, y no solo binario?