Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@sugarlabs.org>2012-10-04 16:04:59 (GMT)
committer Aleksey Lim <alsroot@sugarlabs.org>2012-10-04 16:07:43 (GMT)
commitacb415ba8b7596ea9631f637274e8819ff3464b1 (patch)
tree2040d1e1bd808c8e6a00366c495de9085d7b8940
parent000181d8850adc453312fcbfae73822340e165fc (diff)
Layers restriction makes sense only for context/implementation resources
-rw-r--r--sugar_network/local/mounts.py4
-rwxr-xr-xtests/units/remote_mount.py24
2 files changed, 26 insertions, 2 deletions
diff --git a/sugar_network/local/mounts.py b/sugar_network/local/mounts.py
index deba9ea..0c36238 100644
--- a/sugar_network/local/mounts.py
+++ b/sugar_network/local/mounts.py
@@ -314,7 +314,9 @@ class RemoteMount(ad.CommandsProcessor, _Mount, _ProxyCommands):
try:
return ad.CommandsProcessor.call(self, request, response)
except ad.CommandNotFound:
- if local.layers.value and 'layer' not in request:
+ if local.layers.value and request.get('document') in \
+ ('context', 'implementation') and \
+ 'layer' not in request:
request['layer'] = local.layers.value
return self._client.call(request, response)
diff --git a/tests/units/remote_mount.py b/tests/units/remote_mount.py
index 7897b4d..f3f7e14 100755
--- a/tests/units/remote_mount.py
+++ b/tests/units/remote_mount.py
@@ -18,6 +18,7 @@ from sugar_network.local.mountset import Mountset
from sugar_network.toolkit import sugar, http
from sugar_network.resources.user import User
from sugar_network.resources.context import Context
+from sugar_network.resources.implementation import Implementation
from sugar_network.resources.artifact import Artifact
from sugar_network.resources.volume import Volume
from sugar_network import IPCClient
@@ -313,7 +314,7 @@ class RemoteMountTest(tests.Test):
self.assertRaises(urllib2.HTTPError, urllib2.urlopen, blob_url)
def test_RestrictLayers(self):
- self.start_ipc_and_restful_server()
+ self.start_ipc_and_restful_server([User, Context, Implementation, Artifact])
remote = IPCClient(mountpoint='/')
context = remote.post(['context'], {
@@ -331,6 +332,7 @@ class RemoteMountTest(tests.Test):
'notes': '',
'spec': {'*-*': {}},
})
+ artifact = remote.post(['artifact'], {})
self.assertEqual(
[{'layer': ['public']}],
@@ -353,6 +355,16 @@ class RemoteMountTest(tests.Test):
remote.get(['implementation'], reply='layer', layer='public')['result'])
self.assertEqual(
+ [{'layer': ['public']}],
+ remote.get(['artifact'], reply='layer')['result'])
+ self.assertEqual(
+ [],
+ remote.get(['artifact'], reply='layer', layer='foo')['result'])
+ self.assertEqual(
+ [{'layer': ['public']}],
+ remote.get(['artifact'], reply='layer', layer='public')['result'])
+
+ self.assertEqual(
[{'stability': 'stable', 'guid': impl, 'arch': '*-*', 'version': '1'}],
remote.get(['context', context], cmd='feed'))
self.assertEqual(
@@ -385,6 +397,16 @@ class RemoteMountTest(tests.Test):
remote.get(['implementation'], reply='layer', layer='public')['result'])
self.assertEqual(
+ [{'layer': ['public']}],
+ remote.get(['artifact'], reply='layer')['result'])
+ self.assertEqual(
+ [],
+ remote.get(['artifact'], reply='layer', layer='foo')['result'])
+ self.assertEqual(
+ [{'layer': ['public']}],
+ remote.get(['artifact'], reply='layer', layer='public')['result'])
+
+ self.assertEqual(
[],
remote.get(['context', context], cmd='feed'))
self.assertEqual(