Skip to content

Commit

Permalink
Add FS api skeleton
Browse files Browse the repository at this point in the history
  • Loading branch information
touilleMan committed Nov 2, 2017
1 parent 0ce3c13 commit 9428bf2
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 0 deletions.
21 changes: 21 additions & 0 deletions parsec/core/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,27 @@ def init_app(self, app):
app.register_cmd('get_core_state', self._cmd_GET_CORE_STATE)
app.register_cmd('logout', self._cmd_LOGOUT)

# FS api
app.register_cmd('file_create', self._fs_proxy_factory('file_create'))
app.register_cmd('file_read', self._fs_proxy_factory('file_read'))
app.register_cmd('file_write', self._fs_proxy_factory('file_write'))
app.register_cmd('stat', self._fs_proxy_factory('stat'))
app.register_cmd('folder_create', self._fs_proxy_factory('folder_create'))
app.register_cmd('move', self._fs_proxy_factory('move'))
app.register_cmd('delete', self._fs_proxy_factory('delete'))
app.register_cmd('file_truncate', self._fs_proxy_factory('file_truncate'))

def _fs_proxy_factory(self, cmd):
def proxy_cmd(app, req):
if not self.user_id:
raise ParsecError('not_logged', 'Must be logged in to use this command')
else:
return getattr(self.fs, '_cmd_%s' % cmd.upper())(app, req)

return proxy_cmd

def _cmd_REGISTER(self, app, req):
raise NotImplementedError()
return {'status': 'ok'}

def _cmd_LOGIN(self, app, req):
Expand All @@ -45,6 +65,7 @@ def _cmd_LOGIN(self, app, req):


def _cmd_GET_AVAILABLE_LOGINS(self, app, req):
raise NotImplementedError()
return {'status': 'ok'}


Expand Down
24 changes: 24 additions & 0 deletions parsec/core/fs.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,27 @@ def start(self):

def stop(self):
pass

def _cmd_FILE_CREATE(self, app, req):
return {'status': 'ok'}

def _cmd_FILE_READ(self, app, req):
return {'status': 'ok'}

def _cmd_FILE_WRITE(self, app, req):
return {'status': 'ok'}

def _cmd_STAT(self, app, req):
return {'status': 'ok'}

def _cmd_FOLDER_CREATE(self, app, req):
return {'status': 'ok'}

def _cmd_MOVE(self, app, req):
return {'status': 'ok'}

def _cmd_DELETE(self, app, req):
return {'status': 'ok'}

def _cmd_FILE_TRUNCATE(self, app, req):
return {'status': 'ok'}
19 changes: 19 additions & 0 deletions tests/core/test_control_api.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import pytest
import zmq
import json
from unittest.mock import Mock
Expand Down Expand Up @@ -56,6 +57,24 @@ def test_bad_login(self):
rep = sock.recv()
assert rep == {"status": "unknown_user", 'label': 'No user known with id `john`'}

@pytest.mark.parametrize('cmd', [
'logout',
'file_create',
'file_read',
'file_write',
'stat',
'folder_create',
'move',
'delete',
'file_truncate',
])
def test_must_be_logged_cmds(self, cmd):
with self.core.connected() as sock:
sock.send({"cmd": cmd})
rep = sock.recv()
assert rep == {"status": "not_logged", 'label': 'Must be logged in to use this command'}


class TestAlreadyLogged(BaseCoreTest):

Expand Down

0 comments on commit 9428bf2

Please sign in to comment.