Initial commit on Forgejo
Fresh repository history for elektrine/tarakan hosted at https://git.elektrine.com/elektrine/tarakan.
This commit is contained in:
commit
af6077b9c3
455 changed files with 78366 additions and 0 deletions
72
test/tarakan_web/live/model_analytics_live_test.exs
Normal file
72
test/tarakan_web/live/model_analytics_live_test.exs
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
defmodule TarakanWeb.ModelAnalyticsLiveTest do
|
||||
use TarakanWeb.ConnCase, async: true
|
||||
|
||||
import Phoenix.LiveViewTest
|
||||
|
||||
alias Tarakan.Repo
|
||||
alias Tarakan.Scans.CanonicalFinding
|
||||
|
||||
defp confirm_findings(scan) do
|
||||
for occurrence <- scan.findings do
|
||||
CanonicalFinding
|
||||
|> Repo.get!(occurrence.canonical_finding_id)
|
||||
|> Ecto.Changeset.change(status: "verified")
|
||||
|> Repo.update!()
|
||||
end
|
||||
end
|
||||
|
||||
test "says so plainly when nothing has been reported", %{conn: conn} do
|
||||
{:ok, _view, html} = live(conn, ~p"/models")
|
||||
|
||||
assert html =~ "No model has reported enough findings yet"
|
||||
end
|
||||
|
||||
# The scoreboard hides models below five reported findings, so both models
|
||||
# need a real body of work before they show up at all.
|
||||
defp unrelated_findings_json(count) do
|
||||
findings =
|
||||
for index <- 1..count do
|
||||
%{
|
||||
"file" => "lib/unrelated/module_#{index}.ex",
|
||||
"line_start" => index * 7,
|
||||
"line_end" => index * 7 + 2,
|
||||
"severity" => "low",
|
||||
"title" => "Unrelated observation (#{index})",
|
||||
"description" => "Something else entirely."
|
||||
}
|
||||
end
|
||||
|
||||
Jason.encode!(%{"tarakan_scan_format" => 1, "findings" => findings})
|
||||
end
|
||||
|
||||
test "scores models and lists the selected model's blind spots", %{conn: conn} do
|
||||
account = github_account_fixture()
|
||||
repository = github_repository_fixture(account)
|
||||
|
||||
found =
|
||||
scan_fixture(repository, account, %{
|
||||
"model" => "sharp-model",
|
||||
"findings_json" => findings_json_fixture(5)
|
||||
})
|
||||
|
||||
confirm_findings(found)
|
||||
|
||||
scan_fixture(repository, account, %{
|
||||
"model" => "blunt-model",
|
||||
"findings_json" => unrelated_findings_json(5)
|
||||
})
|
||||
|
||||
{:ok, view, html} = live(conn, ~p"/models")
|
||||
|
||||
assert html =~ "sharp-model"
|
||||
assert html =~ "blunt-model"
|
||||
|
||||
html =
|
||||
view
|
||||
|> element("#model-row-blunt-model")
|
||||
|> render_click()
|
||||
|
||||
assert html =~ "Blind spots"
|
||||
assert html =~ "Unsanitized input reaches interpolated query"
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue