Skip to content

Commit e0115f5

Browse files
authored
feat: add code formatting check to CI workflow (#40)
1 parent 6f251fd commit e0115f5

File tree

3 files changed

+21
-13
lines changed

3 files changed

+21
-13
lines changed

.github/workflows/ci.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ jobs:
4141
- name: Install dependencies
4242
run: mix deps.get
4343

44+
- name: Check code formatting
45+
run: mix format --check-formatted
46+
4447
- name: Compile dependencies
4548
run: mix deps.compile
4649

lib/acx/persist/ecto_adapter.ex

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ defmodule Acx.Persist.EctoAdapter do
173173
defp build_filtered_query(filter) do
174174
import Ecto.Query
175175
base_query = from(r in CasbinRule)
176-
176+
177177
Enum.reduce(filter, base_query, fn {field, value}, query ->
178178
add_where_clause(query, field, value)
179179
end)
@@ -182,7 +182,7 @@ defmodule Acx.Persist.EctoAdapter do
182182
# Helper function to add WHERE clause for a single filter condition
183183
defp add_where_clause(query, field, values) when is_list(values) do
184184
import Ecto.Query
185-
185+
186186
case field do
187187
:ptype -> where(query, [r], r.ptype in ^values)
188188
:v0 -> where(query, [r], r.v0 in ^values)
@@ -198,7 +198,7 @@ defmodule Acx.Persist.EctoAdapter do
198198

199199
defp add_where_clause(query, field, value) do
200200
import Ecto.Query
201-
201+
202202
case field do
203203
:ptype -> where(query, [r], r.ptype == ^value)
204204
:v0 -> where(query, [r], r.v0 == ^value)

test/persist/readonly_file_adapter_filtered_test.exs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ defmodule Acx.Persist.ReadonlyFileAdapterFilteredTest do
1616

1717
# Should only have policies with domain1
1818
assert length(policies) == 2
19+
1920
assert Enum.all?(policies, fn [_ptype, _subj, domain, _obj, _act] -> domain == "domain1" end)
2021
end
2122

@@ -38,22 +39,25 @@ defmodule Acx.Persist.ReadonlyFileAdapterFilteredTest do
3839

3940
# Should only have p rules with domain2
4041
assert length(policies) == 2
42+
4143
assert Enum.all?(policies, fn [ptype, _subj, domain, _obj, _act] ->
42-
ptype == "p" && domain == "domain2"
43-
end)
44+
ptype == "p" && domain == "domain2"
45+
end)
4446
end
4547

4648
test "filters policies by list of values" do
4749
adapter = ReadonlyFileAdapter.new(@pfile)
4850

4951
# Load policies for domain1 OR domain2 (domain is at v1 position)
50-
{:ok, policies} = PersistAdapter.load_filtered_policy(adapter, %{v1: ["domain1", "domain2"]})
52+
{:ok, policies} =
53+
PersistAdapter.load_filtered_policy(adapter, %{v1: ["domain1", "domain2"]})
5154

5255
# Should have policies with domain1 or domain2
5356
assert length(policies) == 4
57+
5458
assert Enum.all?(policies, fn [_ptype, _subj, domain, _obj, _act] ->
55-
domain in ["domain1", "domain2"]
56-
end)
59+
domain in ["domain1", "domain2"]
60+
end)
5761
end
5862

5963
test "returns empty list when policy file is nil" do
@@ -78,17 +82,18 @@ defmodule Acx.Persist.ReadonlyFileAdapterFilteredTest do
7882
e = Enforcer.set_persist_adapter(e, adapter)
7983

8084
# Load only policies for domain1 (domain is at v1 position)
81-
e = Enforcer.load_filtered_policies!(e, %{v1: "domain1"})
82-
|> Enforcer.load_mapping_policies!()
85+
e =
86+
Enforcer.load_filtered_policies!(e, %{v1: "domain1"})
87+
|> Enforcer.load_mapping_policies!()
8388

8489
# Should only have domain1 policies
8590
policies = Enforcer.list_policies(e)
8691
assert length(policies) == 2
87-
92+
8893
# Domain1 requests should work
8994
assert Enforcer.allow?(e, ["alice", "domain1", "data1", "read"]) === true
9095
assert Enforcer.allow?(e, ["alice", "domain1", "data1", "write"]) === true
91-
96+
9297
# Domain2 requests should not work (policies not loaded)
9398
assert Enforcer.allow?(e, ["alice", "domain2", "data2", "read"]) === false
9499
assert Enforcer.allow?(e, ["bob", "domain2", "data2", "read"]) === false
@@ -104,7 +109,7 @@ defmodule Acx.Persist.ReadonlyFileAdapterFilteredTest do
104109

105110
policies = Enforcer.list_policies(e)
106111
assert length(policies) == 5
107-
112+
108113
# Without role mappings loaded, role-based permissions should not work
109114
mapping_policies = Enforcer.list_mapping_policies(e)
110115
assert length(mapping_policies) == 0

0 commit comments

Comments
 (0)