Prechádzať zdrojové kódy

HUE-911 [jobbrowser] Can not see our own jobs when sharing is disabled

Romain Rigaux 13 rokov pred
rodič
commit
4fcb48b

+ 36 - 1
apps/jobbrowser/src/jobbrowser/tests.py

@@ -24,7 +24,6 @@ import time
 import unittest
 
 from nose.tools import assert_true, assert_false, assert_equal
-from nose.plugins.skip import SkipTest
 
 from desktop.lib.django_test_util import make_logged_in_client
 from desktop.lib.test_utils import grant_access
@@ -32,6 +31,7 @@ from jobsub.models import OozieDesign
 from liboozie.oozie_api_test import OozieServerProvider
 
 from jobbrowser import models, views
+from jobbrowser.conf import SHARE_JOBS
 
 
 LOG = logging.getLogger(__name__)
@@ -66,6 +66,7 @@ def get_hadoop_job_id(oozie_api, oozie_jobid, action_index=1, timeout=60, step=5
     raise Exception(msg)
   return hadoop_job_id
 
+
 class TestJobBrowserWithHadoop(unittest.TestCase, OozieServerProvider):
   """
   Tests for JobBrowser that requires Hadoop. Use the same mini_cluster and jobsubd.
@@ -307,6 +308,40 @@ class TestJobBrowserWithHadoop(unittest.TestCase, OozieServerProvider):
     response = self.client.get('/jobbrowser/jobs/?state=killed')
     assert_false(hadoop_job_id in response.content)
 
+    # Check sharing permissions
+    # Login as ourself
+    finish = SHARE_JOBS.set_for_testing(True)
+    try:
+      response = self.client.get('/jobbrowser/jobs/?user=')
+      assert_true(hadoop_job_id in response.content)
+    finally:
+      finish()
+
+    finish = SHARE_JOBS.set_for_testing(False)
+    try:
+      response = self.client.get('/jobbrowser/jobs/?user=')
+      assert_true(hadoop_job_id in response.content)
+    finally:
+      finish()
+
+    # Login as someone else
+    client_not_me = make_logged_in_client(username='not_me', is_superuser=False, groupname='test')
+    grant_access("not_me", "test", "jobbrowser")
+
+    finish = SHARE_JOBS.set_for_testing(True)
+    try:
+      response = client_not_me.get('/jobbrowser/jobs/?user=')
+      assert_true(hadoop_job_id in response.content)
+    finally:
+      finish()
+
+    finish = SHARE_JOBS.set_for_testing(False)
+    try:
+      response = client_not_me.get('/jobbrowser/jobs/?user=')
+      assert_false(hadoop_job_id in response.content)
+    finally:
+      finish()
+
     # Single job page
     response = self.client.get('/jobbrowser/jobs/%s' % hadoop_job_id)
 

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

@@ -548,7 +548,7 @@ def get_matching_jobs(request, check_permission=False, **kwargs):
 
   return [Job.from_thriftjob(request.jt, j)
           for j in _filter_jobs_by_req(joblist, request, **kwargs)
-          if not check_permission or request.user.is_superuser or j.profile.user == request.user]
+          if not check_permission or request.user.is_superuser or j.profile.user == request.user.username]
 
 def get_job_count_by_state(request, username):
   """