Exemple #1
0
    def test_access_token(self, time):
        time.return_value = 1355000000.000000
        request = testing.DummyRequest()
        request.user = User('bob', 'Bob Example', '*****@*****.**')

        # mock auth
        from pyramid.authorization import ACLAuthorizationPolicy
        from pyramid_macauth import MACAuthenticationPolicy
        from pyramid_multiauth import MultiAuthenticationPolicy
        self.config.set_authorization_policy(ACLAuthorizationPolicy())
        policy = Mock(MACAuthenticationPolicy)
        policy.encode_mac_id.return_value = 'id', 'key'
        mpolicy = MultiAuthenticationPolicy([policy])
        self.config.set_authentication_policy(mpolicy)

        views = Views(request)

        response = views.access_token()

        expected_response = {
            "acesss_token": 'id',
            "mac_key": 'key',
            "expires_in": 360,
            "token_type": "mac",
            "mac_algorithm": "hmac-sha-1"
        }
        self.assertDictEqual(response, expected_response)
        self.assertEqual(request.response.headers['Cache-Control'], "no-store")
        policy.encode_mac_id.assert_called_with(request,
                                                'bob',
                                                expires=1355000360)
Exemple #2
0
    def test_allinone_no_jobmanager(self):
        from magmaweb.job import JobSubmissionError
        from pyramid.httpexceptions import HTTPInternalServerError
        import json
        post = {'ms_data': 'somexml', 'ms_data_file': ''}
        request = testing.DummyRequest(post=post)
        request.user = User('bob', 'Bob Example', '*****@*****.**')
        job = self.fake_job()
        jobquery = Mock(JobQuery)
        job.jobquery.return_value = jobquery
        views = Views(request)
        views.job_factory = Mock(JobFactory)
        views.job_factory.fromScratch = Mock(return_value=job)
        q = Mock(side_effect=JobSubmissionError())
        views.job_factory.submitQuery = q

        with self.assertRaises(HTTPInternalServerError) as e:
            views.allinone()

        expected_json = {'success': False, 'msg': 'Unable to submit query'}
        self.assertEquals(json.loads(e.exception.body), expected_json)
        views.job_factory.fromScratch.assert_called_with('bob')
        jobquery.allinone.assert_called_with(post)
        views.job_factory.submitQuery.assert_called_with(
            jobquery.allinone(), job)
Exemple #3
0
    def testChangeJobOwner(self):
        user1 = User(u'someone', u'somename', u'someemail', 'secret')
        User.add(user1)
        user2 = User(u'someone2', u'somename2', u'someemail2', 'secret2')
        User.add(user2)
        job = FakeJob()
        self.command.job_factory.fromId = MagicMock(name='fromId',
                                                    return_value=job)
        JobMeta.add(job.meta)
        commit()

        args = Namespace(job=u'37dc6b15-2013-429c-98b7-f058bcf0c274',
                         user=u'someone2')
        self.command.owner(args)

        self.assertEqual(DBSession().query(JobMeta.owner).all(),
                         [(u'someone2', )])
Exemple #4
0
 def setUp(self):
     FunctionalTests.setUp(self)
     # Setup owner of job
     jf = make_job_factory(self.settings)
     with transaction.manager:
         user = User('bob', 'Bob Example', '*****@*****.**', 'mypassword')
         DBSession().add(user)
         self.job = jf.fromScratch('bob')
         self.jobid = self.job.id
Exemple #5
0
    def test_new_job(self):
        request = testing.DummyRequest()
        request.user = User('bob', 'Bob Example', '*****@*****.**')
        parent_job = self.job
        rpc = RpcViews(parent_job, request)
        rpc.job_factory.cloneJob = Mock(return_value=self.job2)

        job = rpc.new_job()

        self.assertEqual(job, self.job2)
        rpc.job_factory.cloneJob.assert_called_with(parent_job, 'bob')
Exemple #6
0
    def test_jobfromscratch(self):
        self.config.add_route('results', '/results/{jobid}')
        request = testing.DummyRequest()
        request.user = User('bob', 'Bob Example', '*****@*****.**')
        job = self.fake_job()
        views = Views(request)
        views.job_factory.fromScratch = Mock(return_value=job)

        response = views.jobfromscratch()

        views.job_factory.fromScratch.assert_called_with('bob')
        self.assertEqual(response.location, 'http://example.com/results/foo')
Exemple #7
0
    def test_allinone_restricted(self):
        self.config.add_settings(restricted=True)
        post = {'ms_data': 'somexml', 'ms_data_file': ''}
        request = testing.DummyRequest(post=post)
        request.user = User('bob', 'Bob Example', '*****@*****.**')
        job = self.fake_job()
        jobquery = Mock(JobQuery)
        job.jobquery.return_value = jobquery
        views = Views(request)
        views.job_factory = Mock(JobFactory)
        views.job_factory.fromScratch = Mock(return_value=job)

        views.allinone()

        job.jobquery.assert_called_with('http://example.com/status/foo.json',
                                        True, 1)
Exemple #8
0
    def test_uploaddb_post(self):
        self.config.add_route('results', '/results/{jobid}')
        from cgi import FieldStorage
        dbfile = FieldStorage()
        dbfile.file = StringIO()
        request = testing.DummyRequest(post={'db_file': dbfile})
        request.user = User('bob', 'Bob Example', '*****@*****.**')
        views = Views(request)
        views.job_factory = Mock(JobFactory)
        job = self.fake_job()
        views.job_factory.fromDb.return_value = job

        response = views.uploaddb()

        views.job_factory.fromDb.assert_called_with(dbfile.file, 'bob')
        self.assertEqual(response.location, 'http://example.com/results/foo')
Exemple #9
0
    def test_login_auto_register_from_login(self, user, remember):
        user.generate.return_value = User('bob', 'bob dob',
                                          '*****@*****.**')
        from pyramid.httpexceptions import HTTPFound
        self.config.add_route('home', '/')
        self.config.add_route('login', '/login')
        request = testing.DummyRequest()
        request.user = None
        request.url = 'http://example.com/login'
        route_mapper = self.config.get_routes_mapper()
        request.matched_route = route_mapper.get_route('login')
        request.registry.settings['auto_register'] = True
        views = Views(request)

        response = views.login()

        self.assertIsInstance(response, HTTPFound)
        self.assertEqual(response.location, 'http://example.com/')
        user.generate.assert_called_with()
        remember.assert_called_with(request, 'bob')
Exemple #10
0
    def test_allinone_with_ms_data_as_text(self):
        post = {'ms_data': 'somexml', 'ms_data_file': ''}
        request = testing.DummyRequest(post=post)
        request.user = User('bob', 'Bob Example', '*****@*****.**')
        job = self.fake_job()
        jobquery = Mock(JobQuery)
        job.jobquery.return_value = jobquery
        views = Views(request)
        views.job_factory = Mock(JobFactory)
        views.job_factory.fromScratch = Mock(return_value=job)

        response = views.allinone()

        views.job_factory.fromScratch.assert_called_with('bob')
        jobquery.allinone.assert_called_with(post)
        views.job_factory.submitQuery.assert_called_with(
            jobquery.allinone(), job)
        self.assertEqual(response, {'success': True, 'jobid': 'foo'})
        self.assertEqual(job.ms_filename, 'Uploaded as text')
        job.jobquery.assert_called_with('http://example.com/status/foo.json',
                                        False, 1)
Exemple #11
0
    def test_allinone_with_ms_data_as_file(self):
        from cgi import FieldStorage
        ms_file = FieldStorage()
        ms_file.filename = r'c:\bla\bla\F1234.mzxml'
        post = {'ms_data_file': ms_file}
        request = testing.DummyRequest(post=post)
        request.user = User('bob', 'Bob Example', '*****@*****.**')
        job = self.fake_job()
        jobquery = Mock(JobQuery)
        job.jobquery.return_value = jobquery
        views = Views(request)
        views.job_factory = Mock(JobFactory)
        views.job_factory.fromScratch = Mock(return_value=job)

        response = views.allinone()

        views.job_factory.fromScratch.assert_called_with('bob')
        jobquery.allinone.assert_called_with(post)
        views.job_factory.submitQuery.assert_called_with(
            jobquery.allinone(), job)
        self.assertEqual(response, {'success': True, 'jobid': 'foo'})
        self.assertEqual(job.ms_filename, r'c:\bla\bla\F1234.mzxml')
        job.jobquery.assert_called_with('http://example.com/status/foo.json',
                                        False, 1)
Exemple #12
0
    def test_workspace(self):
        import uuid
        self.config.add_route('results', '/results/{jobid}')
        request = testing.DummyRequest()
        request.user = User('bob', 'Bob Example', '*****@*****.**')
        created_at = datetime.datetime(2012, 11, 14, 10, 48, 26, 504478)
        jobs = [
            JobMeta(
                uuid.UUID('11111111-1111-1111-1111-111111111111'),
                'bob',
                description='My job',
                created_at=created_at,
                ms_filename='F1234.mzxml',
                state='STOPPED',
                is_public=False,
            )
        ]
        request.user.jobs = jobs
        views = Views(request)
        views.job_factory.dbSize = Mock(return_value=1234)

        response = views.workspace()

        id1 = '11111111-1111-1111-1111-111111111111'
        url1 = 'http://example.com/results/' + id1
        expected_jobs = [{
            'id': '11111111-1111-1111-1111-111111111111',
            'url': url1,
            'description': 'My job',
            'is_public': False,
            'ms_filename': 'F1234.mzxml',
            'state': 'STOPPED',
            'created_at': '2012-11-14T10:48:26',
            'size': 1234,
        }]
        self.assertEqual(response, {'jobs': expected_jobs})
Exemple #13
0
 def add(self, args):
     "Add new user"
     user = User(args.user, args.name, args.email, args.password)
     User.add(user)
     commit()