Page Menu
Home
Sealhub
Search
Configure Global Search
Log In
Files
F995942
or.test.ts
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Referenced Files
None
Subscribers
None
or.test.ts
View Options
import
assert
from
"assert"
;
import
Bluebird
from
"bluebird"
;
import
{
TestAppConstructor
,
withRunningApp
}
from
"../../test_utils/with-test-app.js"
;
import
create_policies
from
"../../test_utils/policy-types/create-policies-with-complex-pipeline.js"
;
import
type
*
as
Sealious
from
"../../main.js"
;
import
{
Collection
,
FieldTypes
,
Policies
,
Policy
}
from
"../../main.js"
;
import
{
TestApp
}
from
"../../test_utils/test-app.js"
;
const
[
ComplexDenyPipeline
,
ComplexAllowPipeline
]
=
create_policies
.
allowDeny
();
const
collections
=
[
{
name
:
"collection-or(nested-or(allow,noone),nested-and(allow,public))"
,
policies
:
[
new
Policies
.
Or
([
new
ComplexAllowPipeline
(),
new
Policies
.
Noone
()]),
new
Policies
.
And
([
new
ComplexAllowPipeline
(),
new
Policies
.
Public
()]),
],
},
{
name
:
"collection-or(complex-allow-pipeline,public)"
,
policies
:
[
new
ComplexAllowPipeline
(),
new
Policies
.
Public
()],
},
{
name
:
"collection-or(complex-deny-pipeline,noone)"
,
policies
:
[
new
ComplexDenyPipeline
(),
new
Policies
.
Noone
()],
},
{
name
:
"collection-or(complex-deny-pipeline,public)"
,
policies
:
[
new
ComplexDenyPipeline
(),
new
Policies
.
Public
()],
},
];
function
extend
(
t
:
TestAppConstructor
)
{
const
numbers
=
new
(
class
extends
Collection
{
name
=
"numbers"
;
fields
=
{
number
:
new
FieldTypes
.
Int
(),
};
})();
const
collections_to_add
:
{
[
collection
:
string
]
:
Collection
}
=
{
numbers
,
};
for
(
const
{
name
,
policies
}
of
collections
)
{
collections_to_add
[
name
]
=
new
(
class
extends
Collection
{
name
=
name
;
fields
=
{
number
:
new
FieldTypes
.
SingleReference
(
"numbers"
),
};
policies
=
{
list
:
new
Policies
.
Or
(
policies
),
show
:
new
Policies
.
Or
(
policies
),
create
:
new
Policies
.
Public
(),
};
})();
}
return
class
extends
t
{
collections
=
{
...
TestApp
.
BaseCollections
,
...
collections_to_add
,
numbers
,
};
};
}
async
function
createItems
(
app
:
Sealious
.
App
)
{
let
numbers
=
await
Bluebird
.
map
([
0
,
1
,
2
],
(
n
)
=>
app
.
collections
.
numbers
.
suCreate
({
number
:
n
})
);
for
(
const
number
of
numbers
)
{
await
Bluebird
.
map
(
collections
,
({
name
})
=>
app
.
collections
[
name
].
suCreate
({
number
:
number
.
id
,
})
);
}
}
describe
(
"OrPolicy"
,
()
=>
{
it
(
"returns everything for collection-or(nested-or(allow,noone),nested-and(allow,public))"
,
()
=>
withRunningApp
(
extend
,
async
({
app
,
rest_api
})
=>
{
await
createItems
(
app
);
return
rest_api
.
get
(
"/api/v1/collections/collection-or(nested-or(allow,noone),nested-and(allow,public))"
)
.
then
(({
items
}
:
any
)
=>
assert
.
equal
(
items
.
length
,
3
));
}));
it
(
"returns everything for or(complex-allow-pipeline,public)"
,
()
=>
withRunningApp
(
extend
,
async
({
app
,
rest_api
})
=>
{
await
createItems
(
app
);
return
rest_api
.
get
(
"/api/v1/collections/collection-or(complex-allow-pipeline,public)"
)
.
then
(({
items
}
:
any
)
=>
assert
.
equal
(
items
.
length
,
3
));
}));
it
(
"returns nothing for or(complex-deny-pipeline,noone)"
,
()
=>
withRunningApp
(
extend
,
async
({
app
,
rest_api
})
=>
{
await
createItems
(
app
);
return
rest_api
.
get
(
"/api/v1/collections/collection-or(complex-deny-pipeline,noone)"
)
.
then
(({
items
}
:
any
)
=>
assert
.
equal
(
items
.
length
,
0
));
}));
it
(
"returns everything for or(complex-deny-pipeline,public)"
,
()
=>
withRunningApp
(
extend
,
async
({
app
,
rest_api
})
=>
{
await
createItems
(
app
);
return
rest_api
.
get
(
"/api/v1/collections/collection-or(complex-deny-pipeline,public)"
)
.
then
(({
items
}
:
any
)
=>
assert
.
equal
(
items
.
length
,
3
));
}));
});
File Metadata
Details
Attached
Mime Type
text/x-java
Expires
Tue, Dec 24, 02:16 (1 d, 4 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
557014
Default Alt Text
or.test.ts (3 KB)
Attached To
Mode
rS Sealious
Attached
Detach File
Event Timeline
Log In to Comment