-
Notifications
You must be signed in to change notification settings - Fork 80
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
bda77cb
commit eee5289
Showing
3 changed files
with
150 additions
and
37 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,13 +4,16 @@ | |
|
||
import synapse.exc as s_exc | ||
import synapse.common as s_common | ||
import synapse.cortex as s_cortex | ||
import synapse.telepath as s_telepath | ||
|
||
import synapse.lib.time as s_time | ||
import synapse.lib.layer as s_layer | ||
import synapse.lib.msgpack as s_msgpack | ||
import synapse.lib.spooled as s_spooled | ||
|
||
import synapse.lib.hiveauth as s_hiveauth | ||
|
||
import synapse.tools.backup as s_tools_backup | ||
|
||
import synapse.tests.utils as s_t_utils | ||
|
@@ -1918,6 +1921,8 @@ async def __anit__(self, dirn=None, size=1, cell=None): | |
with mock.patch('synapse.lib.spooled.Dict', Dict): | ||
async with self.getTestCore() as core: | ||
|
||
user = await core.auth.addUser('[email protected]') | ||
|
||
viewiden = await core.callStorm(''' | ||
$lyr = $lib.layer.add() | ||
$view = $lib.view.add(($lyr.iden,)) | ||
|
@@ -1944,7 +1949,60 @@ async def __anit__(self, dirn=None, size=1, cell=None): | |
''', opts=opts) | ||
|
||
parent = core.view.layers[0] | ||
await layr.confirmLayerEditPerms(core.auth.rootuser, parent.iden) | ||
|
||
seen = set() | ||
def confirm(self, perm, default=None, gateiden=None): | ||
seen.add(perm) | ||
return True | ||
|
||
def confirmPropSet(self, user, prop, layriden): | ||
seen.add(prop.setperms[0]) | ||
seen.add(prop.setperms[1]) | ||
|
||
def confirmPropDel(self, user, prop, layriden): | ||
seen.add(prop.delperms[0]) | ||
seen.add(prop.delperms[1]) | ||
|
||
with mock.patch.object(s_hiveauth.HiveUser, 'confirm', confirm): | ||
with mock.patch.object(s_cortex.Cortex, 'confirmPropSet', confirmPropSet): | ||
with mock.patch.object(s_cortex.Cortex, 'confirmPropDel', confirmPropDel): | ||
await layr.confirmLayerEditPerms(user, parent.iden) | ||
|
||
self.eq(seen, { | ||
# Node add | ||
('node', 'add', 'syn:tag'), | ||
('node', 'add', 'test:str'), | ||
|
||
# Old style prop set | ||
('node', 'prop', 'set', 'test:str:hehe'), | ||
('node', 'prop', 'set', 'test:str.created'), | ||
|
||
('node', 'prop', 'set', 'syn:tag:up'), | ||
('node', 'prop', 'set', 'syn:tag:base'), | ||
('node', 'prop', 'set', 'syn:tag:depth'), | ||
('node', 'prop', 'set', 'syn:tag.created'), | ||
|
||
# New style prop set | ||
('node', 'prop', 'set', 'test:str', 'hehe'), | ||
('node', 'prop', 'set', 'test:str', '.created'), | ||
|
||
('node', 'prop', 'set', 'syn:tag', 'up'), | ||
('node', 'prop', 'set', 'syn:tag', 'base'), | ||
('node', 'prop', 'set', 'syn:tag', 'depth'), | ||
('node', 'prop', 'set', 'syn:tag', '.created'), | ||
|
||
# Tag/tagprop add | ||
('node', 'tag', 'add', 'foo'), | ||
('node', 'tag', 'add', 'bar'), | ||
('node', 'tag', 'add', 'foo', 'bar'), | ||
('node', 'tag', 'add', 'foo', 'bar', 'baz'), | ||
|
||
# Nodedata set | ||
('node', 'data', 'set', 'foo'), | ||
|
||
# Edge add | ||
('node', 'edge', 'add', 'refs'), | ||
}) | ||
|
||
await core.nodes(''' | ||
test:str=foo | ||
|
@@ -1953,8 +2011,67 @@ async def __anit__(self, dirn=None, size=1, cell=None): | |
| delnode | ||
''', opts=opts) | ||
|
||
await layr.confirmLayerEditPerms(core.auth.rootuser, parent.iden) | ||
await layr.confirmLayerEditPerms(core.auth.rootuser, layr.iden, delete=True) | ||
seen.clear() | ||
with mock.patch.object(s_hiveauth.HiveUser, 'confirm', confirm): | ||
with mock.patch.object(s_cortex.Cortex, 'confirmPropSet', confirmPropSet): | ||
with mock.patch.object(s_cortex.Cortex, 'confirmPropDel', confirmPropDel): | ||
await layr.confirmLayerEditPerms(user, parent.iden) | ||
|
||
self.eq(seen, { | ||
# Node add | ||
('node', 'add', 'syn:tag'), | ||
('node', 'add', 'test:str'), | ||
|
||
# Old style prop set | ||
('node', 'prop', 'set', 'test:str.created'), | ||
|
||
('node', 'prop', 'set', 'syn:tag:up'), | ||
('node', 'prop', 'set', 'syn:tag:base'), | ||
('node', 'prop', 'set', 'syn:tag:depth'), | ||
('node', 'prop', 'set', 'syn:tag.created'), | ||
|
||
# New style prop set | ||
('node', 'prop', 'set', 'test:str', '.created'), | ||
|
||
('node', 'prop', 'set', 'syn:tag', 'up'), | ||
('node', 'prop', 'set', 'syn:tag', 'base'), | ||
('node', 'prop', 'set', 'syn:tag', 'depth'), | ||
('node', 'prop', 'set', 'syn:tag', '.created'), | ||
|
||
# Tag/tagprop add | ||
('node', 'tag', 'add', 'foo', 'bar'), | ||
}) | ||
|
||
seen.clear() | ||
with mock.patch.object(s_hiveauth.HiveUser, 'confirm', confirm): | ||
with mock.patch.object(s_cortex.Cortex, 'confirmPropSet', confirmPropSet): | ||
with mock.patch.object(s_cortex.Cortex, 'confirmPropDel', confirmPropDel): | ||
await layr.confirmLayerEditPerms(user, layr.iden, delete=True) | ||
|
||
self.eq(seen, { | ||
# Node del | ||
('node', 'del', 'syn:tag'), | ||
('node', 'del', 'test:str'), | ||
|
||
# Old style prop del | ||
('node', 'prop', 'del', 'test:str.created'), | ||
|
||
('node', 'prop', 'del', 'syn:tag:up'), | ||
('node', 'prop', 'del', 'syn:tag:base'), | ||
('node', 'prop', 'del', 'syn:tag:depth'), | ||
('node', 'prop', 'del', 'syn:tag.created'), | ||
|
||
# New style prop del | ||
('node', 'prop', 'del', 'test:str', '.created'), | ||
|
||
('node', 'prop', 'del', 'syn:tag', 'up'), | ||
('node', 'prop', 'del', 'syn:tag', 'base'), | ||
('node', 'prop', 'del', 'syn:tag', 'depth'), | ||
('node', 'prop', 'del', 'syn:tag', '.created'), | ||
|
||
# Tag/tagprop del | ||
('node', 'tag', 'del', 'foo', 'bar'), | ||
}) | ||
|
||
async def test_layer_fromfuture(self): | ||
with self.raises(s_exc.BadStorageVersion): | ||
|