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', })
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")