:ok <- bookmarks(path, user),
{:ok, zip_path} <- :zip.create('#{path}.zip', @files, cwd: path),
{:ok, _} <- File.rm_rf(path) do
- {:ok, zip_path}
+ {:ok, :binary.list_to_bin(zip_path)}
+ end
+ end
+
+ def upload(zip_path) do
+ uploader = Pleroma.Config.get([Pleroma.Upload, :uploader])
+ file_name = zip_path |> String.split("/") |> List.last()
+ id = Ecto.UUID.generate()
+
+ upload = %Pleroma.Upload{
+ id: id,
+ name: file_name,
+ tempfile: zip_path,
+ content_type: "application/zip",
+ path: id <> "/" <> file_name
+ }
+
+ with :ok <- uploader.put_file(upload), :ok <- File.rm(zip_path) do
+ {:ok, upload}
end
end
Bookmark.create(user.id, status3.id)
assert {:ok, path} = Pleroma.Export.run(user)
- assert {:ok, zipfile} = :zip.zip_open(path, [:memory])
+ assert {:ok, zipfile} = :zip.zip_open(String.to_charlist(path), [:memory])
assert {:ok, {'actor.json', json}} = :zip.zip_get('actor.json', zipfile)
assert %{
:zip.zip_close(zipfile)
File.rm!(path)
end
+
+ test "it uploads an exported backup archive" do
+ user = insert(:user, %{nickname: "cofe", name: "Cofe", ap_id: "http://cofe.io/users/cofe"})
+
+ {:ok, status1} = CommonAPI.post(user, %{status: "status1"})
+ {:ok, status2} = CommonAPI.post(user, %{status: "status2"})
+ {:ok, status3} = CommonAPI.post(user, %{status: "status3"})
+ CommonAPI.favorite(user, status1.id)
+ CommonAPI.favorite(user, status2.id)
+ Bookmark.create(user.id, status2.id)
+ Bookmark.create(user.id, status3.id)
+
+ assert {:ok, path} = Pleroma.Export.run(user)
+ assert {:ok, %Pleroma.Upload{}} = Pleroma.Export.upload(path)
+ end
end