Example #1
0
    def test_owner_id_is_user_when_valid_jwt(self):
        payload = {'data': {'email': '*****@*****.**', 'groups': ['pirates']}}
        auth_token = jwt.encode(payload, 'test', algorithm='HS256')
        data = valid_material_params()

        r, status = self.post('/materials', data=data, headers=[('X-Authorisation', auth_token)])
        self.assert201(status)

        r, status = self.get('materials', '', r['_id'])
        self.assertEqual(r['owner_id'], '*****@*****.**')
Example #2
0
    def test_verify_ownership_materials_belong_to_owner_id(self):
        materials_data = utils.merge_dict(valid_material_params(), {'owner_id': 'abc'})

        r1, _ = self.post('/materials', data=materials_data)
        r2, _ = self.post('/materials', data=materials_data)
        r3, _ = self.post('/materials', data=materials_data)

        data = {'owner_id': 'abc', 'materials': [r1['_id'], r2['_id'], r3['_id']]}

        r, status = self.post('/materials/verify_ownership', data=data)
        self.assert200(status)
 def test_out_of_lower_range_col(self):
     materials_response, status = self.post('/materials',
                                            valid_material_params())
     data = valid_container_params({
         'slots': [{
             'address': 'H:0',
             'material': materials_response['_id'],
         }]
     })
     response, status = self.post('/containers', data=data)
     self.assertValidationErrorStatus(status)
     self.assertEqual(response['_issues']['slots']['0'],
                      {'address': "Column out of range: 'H:0'"})
Example #4
0
    def test_bulk_search_materials(self):
        query = {'owner_id': 'abc'}
        query_empty = {'owner_id': 'xyz'}
        abc_materials_data = utils.merge_dict(valid_material_params(), query)
        r1, _ = self.post('/materials', data=abc_materials_data)

        r, status = self.post('/materials/search', data={'where': query})

        self.assert200(status)
        self.assertEqual(len(r['_items']), 1)

        r, status = self.post('/materials/search', data={'where': query_empty})

        self.assert200(status)
        self.assertEqual(len(r['_items']), 0)
 def test_out_of_range_both_numeric(self):
     materials_response, status = self.post('/materials',
                                            valid_material_params())
     data = valid_container_params({
         'row_is_alpha':
         False,
         'slots': [{
             'address': '97',
             'material': materials_response['_id'],
         }]
     })
     response, status = self.post('/containers', data=data)
     self.assertValidationErrorStatus(status)
     self.assertEqual(response['_issues']['slots']['0'],
                      {'address': "Address out of range: '97'"})
 def test_address_both_numerical(self):
     materials_response, status = self.post('/materials',
                                            valid_material_params())
     data = valid_container_params({
         'row_is_alpha':
         False,
         'col_is_alpha':
         False,
         'slots': [{
             'address': '1',
             'material': materials_response['_id'],
         }]
     })
     response, status = self.post('/containers', data=data)
     self.assert201(status)
 def test_multiple_addresses_all_duplicates(self):
     materials_response, status = self.post('/materials',
                                            valid_material_params())
     data = valid_container_params({
         'slots': [{
             'address': 'A:1',
             'material': materials_response['_id'],
         }, {
             'address': 'A:1',
             'material': materials_response['_id'],
         }]
     })
     response, status = self.post('/containers', data=data)
     self.assertValidationErrorStatus(status)
     self.assertValidationError(response,
                                {'slots': "Address A:1 is a duplicate"})
    def test_address_row_alpha_incorrect(self):
        materials_response, status = self.post('/materials',
                                               valid_material_params())

        data = valid_container_params({
            'slots': [{
                'address': '1:A',
                'material': materials_response['_id']
            }]
        })

        response, status = self.post('/containers', data=data)

        self.assertValidationErrorStatus(status)
        self.assertEqual(response['_issues']['slots']['0'],
                         {'address': "Invalid address format: '1:A'"})
 def test_multiple_addresses_no_duplicates(self):
     materials_response, status = self.post('/materials',
                                            valid_material_params())
     data = valid_container_params({
         'slots': [{
             'address': 'A:1',
             'material': materials_response['_id'],
         }, {
             'address': 'B:2',
             'material': materials_response['_id'],
         }, {
             'address': 'C:3',
             'material': materials_response['_id'],
         }]
     })
     response, status = self.post('/containers', data=data)
     self.assert201(status)
    def test_materials_can_be_embedded(self):
        materials_response, status = self.post('/materials',
                                               valid_material_params())
        data = valid_container_params({
            'slots': [{
                'address': 'A:1',
                'material': materials_response['_id'],
            }]
        })

        container, _ = self.post('/containers', data=data)

        response, status = self.get('containers/' + container['_id'] +
                                    '?embedded={"slots.material": 1}')

        self.assert200(status)

        del materials_response['_links']
        del materials_response['_status']

        self.assertEqual(response['slots'][0]['material'], materials_response)
Example #11
0
    def test_returns_401_when_invalid_jwt(self):
        data = valid_material_params()

        r, status = self.post('/materials', data=data, headers=[('X-Authorisation', 'jibberish.jwt.rubbish')])
        self.assert401(status)
Example #12
0
 def test_hmdmc_not_required_confirmed_by_blank(self):
     data = valid_material_params()
     data['hmdmc_not_required_confirmed_by'] = ''
     r, status = self.post('/materials', data=data)
     self.assertValidationErrorStatus(status)
     self.assertValidationError(r, {'hmdmc_not_required_confirmed_by': 'blank'})
Example #13
0
 def test_hmdmc_with_spaces_set_by(self):
     data = valid_material_params()
     data['hmdmc_set_by'] = '  '
     r, status = self.post('/materials', data=data)
     self.assertValidationErrorStatus(status)
     self.assertValidationError(r, {'hmdmc_set_by': 'blank'})
Example #14
0
 def test_hmdmc_with_set_by(self):
     data = valid_material_params()
     r, status = self.post('/materials', data=data)
     self.assert201(status)
Example #15
0
 def test_hmdmc_missing_set_by(self):
     data = valid_material_params()
     del data['hmdmc_set_by']
     r, status = self.post('/materials', data=data)
     self.assertValidationErrorStatus(status)
     self.assertValidationError(r, {'hmdmc_set_by': 'hmdmc'})
Example #16
0
    def test_material_creation(self):
        r, status = self.post(self.domain['materials']['url'], valid_material_params())

        self.assert201(status)

        self.assertRegexpMatches(r['_id'], '[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}')