Initial Dever 0.0.1
This commit is contained in:
commit
81233d098c
1479 files changed
+163782
No files matched your search
@@ -0,0 +1,61 @@
|
||||
use super::packages;
|
||||
|
||||
const ERROR: &str = "public type Error { error Invalid\nerror Unauthorized\nerror Forbidden }";
|
||||
const AUTH: &str = "public id() (value: Text) { value = dever.system.authId() }";
|
||||
|
||||
#[test]
|
||||
fn identity_cannot_escape_to_public_commands_domains_or_tasks() {
|
||||
for api in ["public get me = app.me", "cmd me = app.me"] {
|
||||
let error = packages(&[
|
||||
("dever.api", ERROR),
|
||||
("dever.auth", AUTH),
|
||||
(
|
||||
"demo.user.app",
|
||||
"me() (value: Text) { value = dever.auth.id() }",
|
||||
),
|
||||
("demo.user.api", api),
|
||||
])
|
||||
.unwrap_err();
|
||||
assert_eq!(error.code, "C014", "{api}: {error:?}");
|
||||
}
|
||||
for (package, source, code) in [
|
||||
(
|
||||
"demo.user.domain",
|
||||
"me() (value: Text) { value = dever.auth.id() }",
|
||||
"C014",
|
||||
),
|
||||
(
|
||||
"main",
|
||||
"main() (value: Text) { task = run(dever.auth.id())\nvalue = wait(task) }",
|
||||
"C013",
|
||||
),
|
||||
(
|
||||
"main",
|
||||
"main() (value: Text) { value = dever.system.authId() }",
|
||||
"C006",
|
||||
),
|
||||
] {
|
||||
assert_eq!(
|
||||
packages(&[
|
||||
("dever.api", ERROR),
|
||||
("dever.auth", AUTH),
|
||||
(package, source)
|
||||
])
|
||||
.unwrap_err()
|
||||
.code,
|
||||
code
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn provider_cannot_reenter_request_identity() {
|
||||
let error = packages(&[
|
||||
("dever.api", ERROR),
|
||||
("dever.auth", "public type Claims { subject: Text\nsession: Text\ntenant: Text?\nsite: Text }\npublic id() (value: Text) { value = dever.system.authId() }"),
|
||||
("demo.user.model", "global type User { name: Text }"),
|
||||
("demo.user.app", "type Identity { id: Text\nuser_id: model.id?\ntenant_id: model.id? }\nverify(claims: dever.auth.Claims) (value: Identity) { value = Identity { id = dever.auth.id(), user_id = null, tenant_id = null } }\nhealth() (value: Bool) { value = true }"),
|
||||
("demo.user.api", "public get health = app.health"),
|
||||
]).unwrap_err();
|
||||
assert_eq!(error.code, "C014");
|
||||
}
|
||||
Reference in new issue
Block a user