Explorar o código

[jb] Basic test with mocking for view and modify acl and MR1

Romain Rigaux %!s(int64=11) %!d(string=hai) anos
pai
achega
9ec61876ce

+ 1 - 1
apps/jobbrowser/src/jobbrowser/models.py

@@ -51,7 +51,7 @@ def get_acls(job):
     return dict([(acl['name'], acl['value']) for acl in job.acls])
   else:
     return job.full_job_conf
-      
+
 
 class JobLinkage(object):
   """

+ 25 - 2
apps/jobbrowser/src/jobbrowser/tests.py

@@ -37,7 +37,7 @@ from oozie.models import Workflow
 
 from jobbrowser import models, views
 from jobbrowser.conf import SHARE_JOBS
-from jobbrowser.models import can_view_job, can_modify_job
+from jobbrowser.models import can_view_job, can_modify_job, Job
 
 
 LOG = logging.getLogger(__name__)
@@ -349,6 +349,29 @@ class TestJobBrowserWithHadoop(unittest.TestCase, OozieServerProvider):
                 response.content)
 
 
+class TestMapReduce1NoHadoop:
+
+  def test_acls_job(self):
+    job = MockMr1Job()
+
+    assert_true(can_view_job('test', job))
+    assert_true(can_modify_job('test', job))
+
+    assert_false(can_view_job('test2', job))
+    assert_false(can_modify_job('test2', job))
+
+
+class MockMr1Job(Job):
+
+  def __init__(self):
+    self.is_mr2 = False
+    self._full_job_conf = {
+      'mapreduce.cluster.acls.enabled': True,
+      'mapreduce.job.acl-modify-job': 'test',
+      'mapreduce.job.acl-view-job': 'test'
+    }
+
+
 class TestMapReduce2NoHadoop:
 
   def setUp(self):
@@ -611,7 +634,7 @@ class HistoryServerApi(MockMapreduce2Api):
               u'reducesCompleted': 1, u'avgMapTime': 1798, u'avgMergeTime': 1479, u'id': u'job_1356251510842_0009',
               u'successfulReduceAttempts': 1, u'successfulMapAttempts': 2, u'uberized': False, u'reducesTotal': 1,
               u'state': u'SUCCEEDED', u'failedReduceAttempts': 0, u'mapsCompleted': 2,
-              u'killedMapAttempts': 0, u'diagnostics': u'', u'mapsTotal': 2, u'user': u'test', 
+              u'killedMapAttempts': 0, u'diagnostics': u'', u'mapsTotal': 2, u'user': u'test',
               u'startTime': 1357151916268, u'avgReduceTime': 137,
               u'finishTime': 1357151923925, u'name': u'oozie:action:T=map-reduce:W=MapReduce-copy:A=Sleep:ID=0000004-121223003201296-oozie-oozi-W',
               u'avgShuffleTime': 1421, u'queue': u'default', u'killedReduceAttempts': 0, u'failedMapAttempts': 0

+ 2 - 2
apps/jobbrowser/src/jobbrowser/views.py

@@ -61,9 +61,9 @@ def check_job_permission(view_func):
       return job_not_assigned(request, jobid, request.path)
     except Exception, e:
       raise PopupException(_('Could not find job %s.') % jobid, detail=e)
-    print job.user != request.user.username, can_view_job(request.user.username, job)
+
     if not conf.SHARE_JOBS.get() and not request.user.is_superuser \
-      and job.user != request.user.username and not can_view_job(request.user.username, job):
+        and job.user != request.user.username and not can_view_job(request.user.username, job):
       raise PopupException(_("You don't have permission to access job %(id)s.") % {'id': jobid})
     kwargs['job'] = job
     return view_func(request, *args, **kwargs)