1 defmodule Pleroma.Akkoma.Translators.LibreTranslateTest do
2 use Pleroma.DataCase, async: true
4 alias Pleroma.Akkoma.Translators.LibreTranslate
6 describe "translating with libre translate" do
8 clear_config([:libre_translate, :url], "http://libre.translate/translate")
11 test "should work without an API key" do
13 %{method: :post, url: "http://libre.translate/translate"} = env ->
14 assert {:ok, %{"api_key" => nil}} = Jason.decode(env.body)
24 translatedText: "I will crush you"
29 assert {:ok, "ja", "I will crush you"} = LibreTranslate.translate("ギュギュ握りつぶしちゃうぞ", "en")
32 test "should work with an API key" do
33 clear_config([:libre_translate, :api_key], "libre_translate_api_key")
36 %{method: :post, url: "http://libre.translate/translate"} = env ->
37 assert {:ok, %{"api_key" => "libre_translate_api_key"}} = Jason.decode(env.body)
47 translatedText: "I will crush you"
52 assert {:ok, "ja", "I will crush you"} = LibreTranslate.translate("ギュギュ握りつぶしちゃうぞ", "en")
55 test "should gracefully handle API key errors" do
56 clear_config([:libre_translate, :api_key], "")
59 %{method: :post, url: "http://libre.translate/translate"} ->
64 error: "Please contact the server operator to obtain an API key"
69 assert {:error, "libre_translate: request failed (code 403)"} =
70 LibreTranslate.translate("ギュギュ握りつぶしちゃうぞ", "en")
73 test "should gracefully handle an unsupported language" do
74 clear_config([:libre_translate, :api_key], "")
77 %{method: :post, url: "http://libre.translate/translate"} ->
82 error: "zoop is not supported"
87 assert {:error, "libre_translate: request failed (code 400)"} =
88 LibreTranslate.translate("ギュギュ握りつぶしちゃうぞ", "zoop")