Skip to content

Commit 6332432

Browse files
authored
feat: add auto release and Codecov coverage ci & remove duplicate code (#3)
1 parent 47ca21a commit 6332432

File tree

4 files changed

+105
-72
lines changed

4 files changed

+105
-72
lines changed

.github/workflows/coverage.yml

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
name: Coverage
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
pull_request:
8+
branches:
9+
- master
10+
11+
jobs:
12+
cover:
13+
name: Auto Codecov Coverage
14+
runs-on: ubuntu-latest
15+
16+
steps:
17+
- name: Checkout Repository
18+
uses: actions/checkout@master
19+
20+
- name: Install Rust toolchain
21+
uses: actions-rs/toolchain@v1
22+
with:
23+
profile: minimal
24+
toolchain: stable
25+
override: true
26+
27+
- name: Install cargo-tarpaulin
28+
uses: baptiste0928/cargo-install@v3
29+
with:
30+
crate: cargo-tarpaulin
31+
32+
- name: Run cargo-tarpaulin
33+
run: |
34+
cargo tarpaulin --avoid-cfg-tarpaulin --out Xml
35+
36+
- name: Upload to codecov.io
37+
uses: codecov/codecov-action@v1
38+
with:
39+
token: ${{secrets.CODECOV_TOKEN}}

.github/workflows/release.yml

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
name: Auto Release
2+
3+
on:
4+
push:
5+
# Sequence of patterns matched against refs/tags
6+
tags:
7+
- "v*" # Push events to matching v*, i.e. v1.0, v20.15.10
8+
9+
jobs:
10+
release:
11+
name: Auto Release by Tags
12+
runs-on: ubuntu-latest
13+
14+
steps:
15+
- name: Checkout Repository
16+
uses: actions/checkout@v4
17+
18+
- name: Install Rust toolchain
19+
run: |
20+
rustup set profile minimal
21+
rustup update --no-self-update stable
22+
rustup default stable
23+
24+
- name: Cargo Login
25+
run: cargo login ${{ secrets.CARGO_TOKEN }}
26+
27+
- name: Cargo Publish
28+
run: cargo publish
29+
30+
- name: GitHub Release
31+
id: create_release
32+
uses: actions/create-release@v1
33+
env:
34+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
35+
with:
36+
tag_name: ${{ github.ref }}
37+
release_name: Release ${{ github.ref }}
38+
draft: false
39+
prerelease: false

src/lib.rs

+13-72
Original file line numberDiff line numberDiff line change
@@ -188,24 +188,9 @@ mod tests {
188188
async fn test_load_policy() {
189189
let policy = "p, alice, data1, read\np, bob, data2, write";
190190
let mut adapter = StringAdapter::new(policy);
191-
let mut model = DefaultModel::from_str(
192-
"[request_definition]
193-
r = sub, obj, act
194-
195-
[policy_definition]
196-
p = sub, obj, act
197-
198-
[role_definition]
199-
g = _, _
200-
201-
[policy_effect]
202-
e = some(where (p.eft == allow))
203-
204-
[matchers]
205-
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act",
206-
)
207-
.await
208-
.unwrap();
191+
let mut model = DefaultModel::from_file("tests/rbac_model.conf")
192+
.await
193+
.unwrap();
209194

210195
adapter.load_policy(&mut model).await.unwrap();
211196
let enforcer = Enforcer::new(model, adapter).await.unwrap();
@@ -220,24 +205,9 @@ mod tests {
220205
async fn test_save_policy() {
221206
let policy = "p, alice, data1, read\np, bob, data2, write";
222207
let mut adapter = StringAdapter::new(policy);
223-
let mut model = DefaultModel::from_str(
224-
"[request_definition]
225-
r = sub, obj, act
226-
227-
[policy_definition]
228-
p = sub, obj, act
229-
230-
[role_definition]
231-
g = _, _
232-
233-
[policy_effect]
234-
e = some(where (p.eft == allow))
235-
236-
[matchers]
237-
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act",
238-
)
239-
.await
240-
.unwrap();
208+
let mut model = DefaultModel::from_file("tests/rbac_model.conf")
209+
.await
210+
.unwrap();
241211

242212
adapter.load_policy(&mut model).await.unwrap();
243213
adapter.save_policy(&mut model).await.unwrap();
@@ -253,24 +223,9 @@ mod tests {
253223
async fn test_clear_policy() {
254224
let policy = "p, alice, data1, read\np, bob, data2, write";
255225
let mut adapter = StringAdapter::new(policy);
256-
let mut model = DefaultModel::from_str(
257-
"[request_definition]
258-
r = sub, obj, act
259-
260-
[policy_definition]
261-
p = sub, obj, act
262-
263-
[role_definition]
264-
g = _, _
265-
266-
[policy_effect]
267-
e = some(where (p.eft == allow))
268-
269-
[matchers]
270-
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act",
271-
)
272-
.await
273-
.unwrap();
226+
let mut model = DefaultModel::from_file("tests/rbac_model.conf")
227+
.await
228+
.unwrap();
274229

275230
adapter.load_policy(&mut model).await.unwrap();
276231
adapter.clear_policy().await.unwrap();
@@ -284,24 +239,9 @@ mod tests {
284239
async fn test_is_filtered() {
285240
let policy = "p, alice, data1, read\np, bob, data2, write";
286241
let mut adapter = StringAdapter::new(policy);
287-
let mut model = DefaultModel::from_str(
288-
"[request_definition]
289-
r = sub, obj, act
290-
291-
[policy_definition]
292-
p = sub, obj, act
293-
294-
[role_definition]
295-
g = _, _
296-
297-
[policy_effect]
298-
e = some(where (p.eft == allow))
299-
300-
[matchers]
301-
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act",
302-
)
303-
.await
304-
.unwrap();
242+
let mut model = DefaultModel::from_file("tests/rbac_model.conf")
243+
.await
244+
.unwrap();
305245

306246
let filter = Filter {
307247
p: vec!["alice"],
@@ -312,6 +252,7 @@ mod tests {
312252
.load_filtered_policy(&mut model, filter)
313253
.await
314254
.unwrap();
255+
315256
assert!(adapter.is_filtered());
316257
}
317258
}

tests/rbac_model.conf

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
[request_definition]
2+
r = sub, obj, act
3+
4+
[policy_definition]
5+
p = sub, obj, act
6+
7+
[role_definition]
8+
g = _, _
9+
10+
[policy_effect]
11+
e = some(where (p.eft == allow))
12+
13+
[matchers]
14+
m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act

0 commit comments

Comments
 (0)