Merge pull request #1188 from FarmBot/mon_tests

Test Maintenance, Dead Code Removal
pull/1189/head
Rick Carlino 2020-04-06 14:11:39 -05:00 committed by GitHub
commit d513794868
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 69 additions and 20 deletions

View File

@ -43,3 +43,5 @@ config :farmbot_core, FarmbotCore.AssetWorker.FarmbotCore.Asset.FbosConfig,
firmware_flash_attempt_threshold: 0
config :plug, :validate_header_keys_during_test, true
config :ex_unit, capture_logs: true

View File

@ -20,16 +20,7 @@ defmodule FarmbotOS.Configurator.LoggerSocket do
end
@impl :cowboy_websocket
def websocket_handle({:text, message}, state) do
case Jason.decode(message) do
{:ok, json} ->
websocket_handle({:json, json}, state)
_ ->
_ = Logger.debug("discarding info: #{message}")
{:ok, state}
end
end
def websocket_handle({:text, _}, state), do: {:ok, state}
@impl :cowboy_websocket
def websocket_info(:after_connect, state) do

View File

@ -3,12 +3,28 @@ defmodule FarmbotOS.Configurator.LoggerSocketTest do
use Mimic
alias FarmbotOS.Configurator.LoggerSocket
setup :verify_on_exit!
import ExUnit.CaptureLog
test "init/2" do
# TODO(Rick) Not sure what the real args are.
# Circle back to make this test more realistic
# later.
expected = {:cowboy_websocket, :foo, :bar}
assert expected == LoggerSocket.init(:foo, :bar)
end
test "websocket_init" do
assert {:ok, %{}} == LoggerSocket.websocket_init(nil)
assert_receive :after_connect
end
test "websocket_handle (invalid JSON)" do
s = %{state: :yep}
msg = "Not JSON."
payl = {:text, msg}
assert {:ok, s} == LoggerSocket.websocket_handle(payl, s)
end
test "websocket_info/2" do
assert capture_log(fn ->
LoggerSocket.websocket_info(:whatever, %{})
end) =~ "Dropping :whatever"
end
end

View File

@ -8,6 +8,8 @@ defmodule FarmbotOS.Configurator.RouterTest do
use Mimic
setup :verify_on_exit!
import ExUnit.CaptureIO
@opts Router.init([])
# Stolen from https://github.com/phoenixframework/phoenix/blob/3f157c30ceae8d1eb524fdd05b5e3de10e434c42/lib/phoenix/test/conn_test.ex#L438
defp redirected_to(conn, status \\ 302)
@ -34,6 +36,7 @@ defmodule FarmbotOS.Configurator.RouterTest do
Router.call(conn, @opts)
end
@tag :capture_log
test "index after reset" do
FarmbotOS.Configurator.ConfigDataLayer
|> expect(:load_last_reset_reason, fn -> "whoops!" end)
@ -45,6 +48,7 @@ defmodule FarmbotOS.Configurator.RouterTest do
assert conn.resp_body =~ "whoops!"
end
@tag :capture_log
test "redirects" do
redirects = [
"/check_network_status.txt",
@ -66,6 +70,7 @@ defmodule FarmbotOS.Configurator.RouterTest do
end)
end
@tag :capture_log
test "celeryscript requests don't get listed as last reset reason" do
FarmbotOS.Configurator.ConfigDataLayer
|> expect(:load_last_reset_reason, fn -> "CeleryScript request." end)
@ -75,6 +80,7 @@ defmodule FarmbotOS.Configurator.RouterTest do
refute conn.resp_body =~ "CeleryScript request."
end
@tag :capture_log
test "no reset reason" do
FarmbotOS.Configurator.ConfigDataLayer
|> expect(:load_last_reset_reason, fn -> nil end)
@ -84,6 +90,7 @@ defmodule FarmbotOS.Configurator.RouterTest do
refute conn.resp_body =~ "<div class=\"last-shutdown-reason\">"
end
@tag :capture_log
test "captive portal" do
conn = conn(:get, "/generate_204")
conn = Router.call(conn, @opts)
@ -94,6 +101,7 @@ defmodule FarmbotOS.Configurator.RouterTest do
assert conn.status == 302
end
@tag :capture_log
test "network index" do
FarmbotOS.Configurator.FakeNetworkLayer
|> expect(:list_interfaces, fn ->
@ -108,6 +116,7 @@ defmodule FarmbotOS.Configurator.RouterTest do
assert conn.resp_body =~ "eth0"
end
@tag :capture_log
test "select network sets session data" do
conn = conn(:post, "select_interface")
conn = Router.call(conn, @opts)
@ -124,6 +133,7 @@ defmodule FarmbotOS.Configurator.RouterTest do
assert get_session(conn, "ifname") == "wlan0"
end
@tag :capture_log
test "config wired" do
conn =
conn(:get, "/config_wired")
@ -133,6 +143,7 @@ defmodule FarmbotOS.Configurator.RouterTest do
assert conn.resp_body =~ "Advanced settings"
end
@tag :capture_log
test "config wireless SSID list" do
FarmbotOS.Configurator.FakeNetworkLayer
|> expect(:scan, fn _ ->
@ -154,6 +165,7 @@ defmodule FarmbotOS.Configurator.RouterTest do
assert conn.resp_body =~ "Test Network"
end
@tag :capture_log
test "config wireless" do
# No SSID or SECURITY
conn =
@ -238,6 +250,7 @@ defmodule FarmbotOS.Configurator.RouterTest do
assert conn.resp_body =~ "unknown or unsupported"
end
@tag :capture_log
test "config_network" do
params = %{
"dns_name" => "super custom",
@ -290,6 +303,7 @@ defmodule FarmbotOS.Configurator.RouterTest do
assert redirected_to(conn) == "/credentials"
end
@tag :capture_log
test "credentials index" do
FarmbotOS.Configurator.ConfigDataLayer
|> expect(:load_email, fn -> "test@test.org" end)
@ -302,6 +316,7 @@ defmodule FarmbotOS.Configurator.RouterTest do
assert conn.resp_body =~ "https://my.farm.bot"
end
@tag :capture_log
test "configure credentials" do
params = %{
"email" => "test@test.org",
@ -334,6 +349,7 @@ defmodule FarmbotOS.Configurator.RouterTest do
assert redirected_to(conn) == "/credentials"
end
@tag :capture_log
test "finish" do
conn =
conn(:get, "/finish")
@ -342,6 +358,7 @@ defmodule FarmbotOS.Configurator.RouterTest do
assert redirected_to(conn) == "/"
end
@tag :capture_log
test "404" do
conn =
conn(:get, "/whoops")
@ -350,6 +367,7 @@ defmodule FarmbotOS.Configurator.RouterTest do
assert conn.resp_body == "Page not found"
end
@tag :capture_log
test "500" do
FarmbotOS.Configurator.FakeNetworkLayer
|> expect(:scan, fn _ ->
@ -360,20 +378,26 @@ defmodule FarmbotOS.Configurator.RouterTest do
]
end)
conn =
conn(:get, "/config_wireless")
|> init_test_session(%{"ifname" => "wlan0"})
|> Router.call(@opts)
crasher = fn ->
conn =
conn(:get, "/config_wireless")
|> init_test_session(%{"ifname" => "wlan0"})
|> Router.call(@opts)
assert conn.status == 500
assert conn.status == 500
end
assert capture_io(:stderr, crasher) =~ "render error"
end
@tag :capture_log
test "/scheduler_debugger" do
kon = get_con("/scheduler_debugger")
assert String.contains?(kon.resp_body, "scheduler_debugger.js")
assert String.contains?(kon.resp_body, "<title>Scheduler Debugger</title>")
end
@tag :capture_log
test "/logger" do
kon = get_con("/logger")
@ -391,6 +415,7 @@ defmodule FarmbotOS.Configurator.RouterTest do
end)
end
@tag :capture_log
test "/api/telemetry/cpu_usage" do
{:ok, json} = Jason.decode(get_con("/api/telemetry/cpu_usage").resp_body)
assert Enum.count(json) == 10
@ -400,6 +425,7 @@ defmodule FarmbotOS.Configurator.RouterTest do
assert(is_integer(zero["value"]))
end
@tag :capture_log
test "/finish" do
expect(ConfigDataLayer, :save_config, 1, fn _conf ->
:ok

View File

@ -4,6 +4,7 @@ defmodule FarmbotOS.LuaTest do
setup :verify_on_exit!
alias FarmbotOS.Lua
@tag :capture_log
test "evaluates Lua" do
assert Lua.eval_assertion("Returns 'true'", "return true")
{:error, message1} = Lua.eval_assertion("Returns 'true'", "-1")

View File

@ -11,6 +11,7 @@ defmodule FarmbotOS.SysCallsTest do
use Mimic
setup :verify_on_exit!
import ExUnit.CaptureIO
test "emergency_unlock" do
expect(FarmbotFirmware, :command, fn {:command_emergency_unlock, []} ->
@ -71,6 +72,7 @@ defmodule FarmbotOS.SysCallsTest do
assert {:error, "Could not find peripheral by id: 11"} == result6
end
@tag :capture_log
test "sync() success" do
# Expect 5 calls and an :ok response.
expect(FarmbotExt.API.Reconciler, :sync_group, 5, fn changeset, _group ->
@ -81,16 +83,21 @@ defmodule FarmbotOS.SysCallsTest do
{:ok, %{wut: module}}
end)
assert :ok == SysCalls.sync()
assert capture_io(fn ->
assert :ok == SysCalls.sync()
end) =~ "green really_fast_blink"
end
@tag :capture_log
test "sync() failure" do
# Expect 5 calls and an :ok response.
expect(FarmbotExt.API, :get_changeset, fn FarmbotCore.Asset.Sync ->
"this is a test"
end)
assert {:error, "\"this is a test\""} == SysCalls.sync()
assert capture_io(fn ->
assert {:error, "\"this is a test\""} == SysCalls.sync()
end) =~ "green slow_blink"
end
test "get_sequence(id)" do

View File

@ -91,6 +91,7 @@ defmodule FarmbotOS.SysCalls.MovementTest do
assert msg == error_log
end
@tag :capture_log
test "move_absolute/4 - error (in tuple)" do
expect(FarmbotFirmware, :request, 1, fn {:parameter_read, [_]} ->
{:error, "boom"}

View File

@ -6,6 +6,7 @@ defmodule FarmbotOS.SysCalls.PinControlTest do
alias FarmbotCore.Asset.Peripheral
@digital 0
@tag :capture_log
test "read_pin with %Peripheral{}, pin is 1" do
expect(FarmbotFirmware, :request, 1, fn
{:pin_read, [p: 13, m: 0]} ->
@ -20,6 +21,7 @@ defmodule FarmbotOS.SysCalls.PinControlTest do
assert 1 == PinControl.read_pin(peripheral, @digital)
end
@tag :capture_log
test "read_pin with %Peripheral{}, pin is 0" do
expect(FarmbotFirmware, :request, 1, fn
{:pin_read, [p: 13, m: 0]} ->
@ -30,6 +32,7 @@ defmodule FarmbotOS.SysCalls.PinControlTest do
assert 0 == PinControl.read_pin(peripheral, @digital)
end
@tag :capture_log
test "toggle_pin, 1 => 0" do
expect(FarmbotCore.Asset, :get_peripheral_by_pin, 1, fn 12 ->
nil
@ -48,6 +51,7 @@ defmodule FarmbotOS.SysCalls.PinControlTest do
assert :ok = PinControl.toggle_pin(12)
end
@tag :capture_log
test "toggle_pin, 0 => 1" do
expect(FarmbotCore.Asset, :get_peripheral_by_pin, 1, fn 12 ->
nil

View File

@ -101,6 +101,7 @@ defmodule FarmbotOS.SysCalls.PointLookupTest do
assert pg == PointLookup.get_point_group(pg.id)
end
@tag :capture_log
test "PointLookup.get_point_group/1 - string" do
Repo.delete_all(PointGroup)
Repo.delete_all(Point)