From b5bad4defc6c75b9b969658229ce5fd2f3a46107 Mon Sep 17 00:00:00 2001 From: Ben Busby Date: Tue, 21 Jan 2025 13:46:29 -0700 Subject: Rewrite project, add daily update of services list The project was rewritten from Elixir to Go, primarily because: - I don't write Elixir anymore and don't want to maintain a project in a language I no longer write - I already write Go for other projects, including my day job, so it's a safer bet for a project that I want to maintain long term - Go allows me to build portable executables that will make it easier for others to run farside on their own machines The Go version of Farsside also has a built in task to fetch the latest services{-full}.json file from the repo and ingest it, which makes running a farside server a lot simpler. It also automatically fetches the latest instance state from https://farside.link unless configured as a primary farside node, which will allow others to use farside without increasing traffic to all instances that are queried by farside (just to the farside node itself). --- test/farside_test.exs | 93 --------------------------------------------------- test/test_helper.exs | 1 - 2 files changed, 94 deletions(-) delete mode 100644 test/farside_test.exs delete mode 100644 test/test_helper.exs (limited to 'test') diff --git a/test/farside_test.exs b/test/farside_test.exs deleted file mode 100644 index b036fdc..0000000 --- a/test/farside_test.exs +++ /dev/null @@ -1,93 +0,0 @@ -defmodule FarsideTest do - - use ExUnit.Case - use Plug.Test - - alias Farside.Router - - @opts Router.init([]) - - def test_conn(path) do - :timer.sleep(1000) - - :get - |> conn(path, "") - |> Router.call(@opts) - end - - test "throttle" do - first_conn = - :get - |> conn("/", "") - |> Router.call(@opts) - - first_redirect = elem(List.last(first_conn.resp_headers), 1) - - throttled_conn = - :get - |> conn("/", "") - |> Router.call(@opts) - - throttled_redirect = elem(List.last(first_conn.resp_headers), 1) - - assert throttled_conn.state == :sent - assert throttled_redirect == first_redirect - end - - test "/" do - conn = test_conn("/") - assert conn.state == :sent - assert conn.status == 200 - end - - test "/:service" do - services_json = Application.fetch_env!(:farside, :services_json) - {:ok, file} = File.read(services_json) - {:ok, service_list} = Jason.decode(file) - - service_names = - Enum.map( - service_list, - fn service -> service["type"] end - ) - - IO.puts("") - - service_names |> - Enum.filter(fn service_name -> service_name != "nitter" end) |> - Enum.map(fn service_name -> - conn = test_conn("/#{service_name}") - first_redirect = elem(List.last(conn.resp_headers), 1) - - IO.puts(" /#{service_name} (#1) -- #{first_redirect}") - assert conn.state == :set - assert conn.status == 302 - - conn = test_conn("/#{service_name}") - second_redirect = elem(List.last(conn.resp_headers), 1) - - IO.puts(" /#{service_name} (#2) -- #{second_redirect}") - assert conn.state == :set - assert conn.status == 302 - assert first_redirect != second_redirect - end) - end - - test "/https://..." do - parent_service = "https://www.youtube.com" - parent_path = "watch?v=dQw4w9WgXcQ" - conn = test_conn("/#{parent_service}/#{parent_path}") - - redirect = elem(List.last(conn.resp_headers), 1) - - IO.puts("") - IO.puts(" /#{parent_service}/#{parent_path}") - IO.puts(" redirected to") - IO.puts(" #{redirect}") - - assert conn.state == :set - assert conn.status == 302 - assert redirect =~ parent_path - assert !(redirect =~ parent_service) - end -end diff --git a/test/test_helper.exs b/test/test_helper.exs deleted file mode 100644 index 869559e..0000000 --- a/test/test_helper.exs +++ /dev/null @@ -1 +0,0 @@ -ExUnit.start() -- cgit v1.2.3