You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by jo...@apache.org on 2013/11/01 21:10:59 UTC

[2/4] git commit: [#6804] ticket:468 fixed API and added tests

[#6804] ticket:468 fixed API and added tests


Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/cd98a7c0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/cd98a7c0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/cd98a7c0

Branch: refs/heads/master
Commit: cd98a7c0387495bc1f2ef67e543f711b66b0886a
Parents: 343065a
Author: coldmind <so...@yandex.ru>
Authored: Wed Oct 30 14:22:15 2013 +0200
Committer: Cory Johns <cj...@slashdotmedia.com>
Committed: Fri Nov 1 19:54:33 2013 +0000

----------------------------------------------------------------------
 Allura/allura/controllers/rest.py           |  7 +++--
 Allura/allura/tests/functional/test_rest.py | 33 ++++++++++++++++++++++++
 2 files changed, 36 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/cd98a7c0/Allura/allura/controllers/rest.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/rest.py b/Allura/allura/controllers/rest.py
index 0472e79..bd098b4 100644
--- a/Allura/allura/controllers/rest.py
+++ b/Allura/allura/controllers/rest.py
@@ -34,10 +34,12 @@ from allura.lib import helpers as h
 from allura.lib import security
 from allura.lib import plugin
 from allura.lib.exceptions import Invalid
+from allura.ext.admin.admin_main import ProjectAdminController, AdminApp
 
 log = logging.getLogger(__name__)
 action_logger = h.log_action(log, 'API:')
 
+
 class RestController(object):
 
     def __init__(self):
@@ -297,8 +299,6 @@ class ProjectRestController(object):
 
     @expose('json:')
     def install_tool(self, tool, mount_point, mount_label, **kw):
-        from allura.ext.admin.admin_main import ProjectAdminController
-        from allura.ext.admin.admin_main import AdminApp
         controller = ProjectAdminController()
 
         if not tool or not mount_point or not mount_label:
@@ -312,7 +312,7 @@ class ProjectRestController(object):
             return {'success': False,
                     'info': 'Incorrect tool name.'
                     }
-        if not h.re_tool_mount_point.match(tool) or c.project.app_instance(mount_point) is not None:
+        if not h.re_tool_mount_point.match(mount_point) or c.project.app_instance(mount_point) is not None:
             return {'success': False,
                     'info': 'Incorrect mount point name, or mount point already exists.'
                     }
@@ -320,7 +320,6 @@ class ProjectRestController(object):
         data = {
             'install': 'install',
             'ep_name': tool,
-            # TODO:
             'ordinal': '1',
             'mount_point': mount_point,
             'mount_label': mount_label

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/cd98a7c0/Allura/allura/tests/functional/test_rest.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/functional/test_rest.py b/Allura/allura/tests/functional/test_rest.py
index 52745fc..d663261 100644
--- a/Allura/allura/tests/functional/test_rest.py
+++ b/Allura/allura/tests/functional/test_rest.py
@@ -30,6 +30,8 @@ from alluratest.controller import TestRestApiBase
 from allura.lib import helpers as h
 from allura.lib.exceptions import Invalid
 from allura import model as M
+from webtest.app import AppError
+
 
 class TestRestHome(TestRestApiBase):
 
@@ -217,3 +219,34 @@ class TestRestHome(TestRestApiBase):
             Provider.get().shortname_validator.to_python.side_effect = Invalid('name', 'value', {})
             r = self.api_get('/rest/p/test/')
             assert r.status_int == 404
+
+    def test_install_tool(self):
+        r = self.api_get('/rest/p/test/')
+        tools_names = [t['name'] for t in r.json['tools']]
+        assert 'tickets' not in tools_names
+
+        r = self.api_post('/rest/p/test/install_tool/something/ticketsmount1/tickets_label1')
+        assert_equal(r.json['info'], 'Incorrect tool name.')
+
+        # check incorrect mount_point name
+        r = self.api_post('/rest/p/test/install_tool/tickets/tickets_mount1/tickets_label1')
+        assert_equal(r.json['info'], 'Incorrect mount point name, or mount point already exists.')
+
+        # check that tool was installed
+        r = self.api_post('/rest/p/test/install_tool/tickets/ticketsmount1/tickets_label1')
+        assert_equal(r.json['info'],
+                     'Tool %s with mount_point %s and mount_label %s was created.' % ('tickets', 'ticketsmount1', 'tickets_label1'))
+        r = self.api_get('/rest/p/test/')
+        tools_names = [t['name'] for t in r.json['tools']]
+        assert 'tickets' in tools_names
+
+        # check that tool already exists
+        r = self.api_post('/rest/p/test/install_tool/tickets/ticketsmount1/tickets_label1')
+        assert_equal(r.json['info'], 'Incorrect mount point name, or mount point already exists.')
+
+        # test that unauthorized can't install tool
+        try:
+            self.app.post('/rest/p/test/install_tool/wiki/wikimount1/wikilabel1', extra_environ={'username': '*anonymous'})
+        except AppError, e:
+            assert '401 Unauthorized' in e.message
+