예제 #1
0
 def test_category_map(self):
     """
     Ensure that passing OPTION_WITH_CATEGORY_MAP causes a category id ->
     tr_name mapping to show up.
     """
     exporter = self.TestSessionStateExporter([
         SessionStateExporterBase.OPTION_WITH_CATEGORY_MAP
     ])
     # Create three untis, two categories (foo, bar) and two jobs (froz,
     # bot) so that froz.category_id == foo
     cat_foo = CategoryUnit({
         'id': 'foo',
         'name': 'The foo category',
     })
     cat_bar = CategoryUnit({
         'id': 'bar',
         'name': 'The bar category',
     })
     job_froz = JobDefinition({
         'plugin': 'shell',
         'id': 'froz',
         'category_id': 'foo'
     })
     # Create and export a session with the three units
     state = SessionState([cat_foo, cat_bar, job_froz])
     session_manager = mock.Mock(spec_set=SessionManager, state=state)
     data = exporter.get_session_data_subset(session_manager)
     # Ensure that only the foo category was used, and the bar category was
     # discarded as nothing was referencing it
     self.assertEqual(data['category_map'], {
         'foo': 'The foo category',
     })
예제 #2
0
 def _parse_submission(self, submission, tmpdir, mode="list"):
     try:
         with tarfile.open(submission) as tar:
             tar.extractall(tmpdir.name)
             with open(os.path.join(tmpdir.name, 'submission.json')) as f:
                 data = json.load(f)
         for result in data['results']:
             result['plugin'] = 'shell'  # Required so default to shell
             result['summary'] = result['name']
             # 'id' field in json file only contains partial id
             result['id'] = result.get('full_id', result['id'])
             if "::" not in result['id']:
                 result['id'] = CERTIFICATION_NS + result['id']
             if mode == "list":
                 self.job_list.append(JobDefinition(result))
             elif mode == "dict":
                 self.job_dict[result['id']] = JobDefinition(result)
         for result in data['resource-results']:
             result['plugin'] = 'resource'
             result['summary'] = result['name']
             # 'id' field in json file only contains partial id
             result['id'] = result.get('full_id', result['id'])
             if "::" not in result['id']:
                 result['id'] = CERTIFICATION_NS + result['id']
             if mode == "list":
                 self.job_list.append(JobDefinition(result))
             elif mode == "dict":
                 self.job_dict[result['id']] = JobDefinition(result)
         for result in data['attachment-results']:
             result['plugin'] = 'attachment'
             result['summary'] = result['name']
             # 'id' field in json file only contains partial id
             result['id'] = result.get('full_id', result['id'])
             if "::" not in result['id']:
                 result['id'] = CERTIFICATION_NS + result['id']
             if mode == "list":
                 self.job_list.append(JobDefinition(result))
             elif mode == "dict":
                 self.job_dict[result['id']] = JobDefinition(result)
         for cat_id, cat_name in data['category_map'].items():
             if mode == "list":
                 self.category_list.append(
                     CategoryUnit({
                         'id': cat_id,
                         'name': cat_name
                     }))
             elif mode == "dict":
                 self.category_dict[cat_id] = CategoryUnit({
                     'id': cat_id,
                     'name': cat_name
                 })
     except OSError as e:
         raise SystemExit(e)
     except KeyError as e:
         self._output_potential_action(str(e))
         raise SystemExit(e)
     return data['title']
 def test_tr_name(self):
     """
     Verify that CategoryUnit.tr_summary() works as expected
     """
     cat = CategoryUnit(self._record.data)
     with mock.patch.object(cat, "get_translated_record_value") as mgtrv:
         retval = cat.tr_name()
     # Ensure that get_translated_record_value() was called
     mgtrv.assert_called_once_with(cat.name)
     # Ensure tr_summary() returned its return value
     self.assertEqual(retval, mgtrv())
 def test_validate(self):
     # NOTE: this test depends on the order of checks in UnitValidator
     # Id is required
     with self.assertRaises(ValidationError) as boom:
         CategoryUnit({}).validate()
     self.assertEqual(boom.exception.problem, Problem.missing)
     self.assertEqual(boom.exception.field, 'id')
     # Name is also required
     with self.assertRaises(ValidationError) as boom:
         CategoryUnit({'id': 'id'}).validate()
     self.assertEqual(boom.exception.problem, Problem.missing)
     self.assertEqual(boom.exception.field, 'name')
     # When both id and name are present, everything is OK
     self.assertIsNone(
         CategoryUnit({
             'id': 'id',
             'name': 'name'
         }).validate())
 def test_instantiate_template(self):
     data = mock.Mock(name='data')
     raw_data = mock.Mock(name='raw_data')
     origin = mock.Mock(name='origin')
     provider = mock.Mock(name='provider')
     parameters = mock.Mock(name='parameters')
     field_offset_map = mock.Mock(name='field_offset_map')
     unit = CategoryUnit.instantiate_template(data, raw_data, origin,
                                              provider, parameters,
                                              field_offset_map)
     self.assertIs(unit._data, data)
     self.assertIs(unit._raw_data, raw_data)
     self.assertIs(unit._origin, origin)
     self.assertIs(unit._provider, provider)
     self.assertIs(unit._parameters, parameters)
     self.assertIs(unit._field_offset_map, field_offset_map)
 def test_repr(self):
     cat = CategoryUnit(self._record.data)
     expected = "<CategoryUnit id:'id' name:'name'>"
     observed = repr(cat)
     self.assertEqual(expected, observed)
 def test_partial_id(self):
     cat = CategoryUnit(self._record.data)
     self.assertEqual(cat.partial_id, "id")
 def test_str(self):
     cat = CategoryUnit(self._record.data)
     self.assertEqual(str(cat), "name")
 def test_smoke_gettext_record(self):
     cat = CategoryUnit(self._gettext_record.data)
     self.assertEqual(cat.id, "id")
     self.assertEqual(cat.name, "name")