def test_obj_oc_mutally_exclusive(self): obj = Object() oc = ObservableComposition() e = Event() o1 = Observable(obj) self.assertRaises(ValueError, _set_event, o1, e) self.assertRaises(ValueError, _set_oc, o1, oc) o5 = Observable(e) self.assertRaises(ValueError, _set_obj, o5, obj) self.assertRaises(ValueError, _set_oc, o5, oc) o2 = Observable(oc) self.assertRaises(ValueError, _set_obj, o2, obj) self.assertRaises(ValueError, _set_event, o2, e) o3 = Observable() _set_obj(o3, obj) self.assertRaises(ValueError, _set_event, o3, e) self.assertRaises(ValueError, _set_oc, o3, oc) o6 = Observable() _set_event(o6, e) self.assertRaises(ValueError, _set_obj, o6, obj) self.assertRaises(ValueError, _set_oc, o6, oc) o4 = Observable() _set_oc(o4, oc) self.assertRaises(ValueError, _set_obj, o4, obj) self.assertRaises(ValueError, _set_event, o4, e)
def test_is_empty_observable(self): # Check to see if the cybox.core.Observable object is empty by calling `is_empty_observable` # Empty Observable test = Observable() self.assertTrue(utils.is_empty_observable(test)) # Observable is None test = None self.assertTrue(utils.is_empty_observable(test)) # Non empty Observable with Object test = Observable(MockObject()) self.assertFalse(utils.is_empty_observable(test)) # Non empty Observable with Event test = Observable(Event()) self.assertFalse(utils.is_empty_observable(test)) # Checks non empty observable_composition and observable_composition.observables test = Observable() obs = ObservableComposition() test.observable_composition = obs test.observable_composition.observables = [Observable()] self.assertFalse(utils.is_empty_observable(test))
def test_observble_init(self): obj = Object() dobj = ObjectProperties() a = Address() oc = ObservableComposition() e = Event() obs1 = Observable(obj) self.assertTrue(obs1.object_ is obj) self.assertFalse(obs1.observable_composition) self.assertFalse(obs1.event) obs2 = Observable(dobj) self.assertTrue(obs2.object_) self.assertTrue(obs2.object_.properties is dobj) self.assertFalse(obs2.observable_composition) self.assertFalse(obs2.event) obs3 = Observable(a) self.assertTrue(obs3.object_) self.assertTrue(obs3.object_.properties is a) self.assertFalse(obs3.event) self.assertFalse(obs3.observable_composition) obs4 = Observable(oc) self.assertFalse(obs4.object_) self.assertFalse(obs4.event) self.assertTrue(obs4.observable_composition is oc) obs5 = Observable(e) self.assertFalse(obs5.object_) self.assertTrue(obs5.event is e) self.assertFalse(obs5.observable_composition)
def from_obj(observable_obj): if not observable_obj: return None from cybox.core import PatternFidelity obs = Observable() obs.id_ = observable_obj.id obs.title = observable_obj.Title obs.description = StructuredText.from_obj(observable_obj.Description) obs.object_ = Object.from_obj(observable_obj.Object) obs.event = Event.from_obj(observable_obj.Event) obs.observable_composition = ObservableComposition.from_obj( observable_obj.Observable_Composition) obs.idref = observable_obj.idref obs.sighting_count = observable_obj.sighting_count if observable_obj.Observable_Source: obs.observable_source = [ MeasureSource.from_obj(x) for x in observable_obj.Observable_Source ] obs.keywords = Keywords.from_obj(observable_obj.Keywords) obs.pattern_fidelity = PatternFidelity.from_obj( observable_obj.Pattern_Fidelity) return obs
def test_invalid_arguments(self): obj = Object() e = Event() oc = ObservableComposition() o1 = Observable() self.assertRaises(TypeError, _set_event, o1, obj) self.assertRaises(TypeError, _set_oc, o1, obj) self.assertRaises(TypeError, _set_obj, o1, e) self.assertRaises(TypeError, _set_oc, o1, e) self.assertRaises(TypeError, _set_obj, o1, oc) self.assertRaises(TypeError, _set_event, o1, oc)
def from_obj(observable_obj): if not observable_obj: return None obs = Observable() obs.id_ = observable_obj.get_id() obs.title = observable_obj.get_Title() obs.description = StructuredText.from_obj(observable_obj.get_Description()) obs.object_ = Object.from_obj(observable_obj.get_Object()) obs.event = Event.from_obj(observable_obj.get_Event()) obs.observable_composition = ObservableComposition.from_obj(observable_obj.get_Observable_Composition()) obs.idref = observable_obj.get_idref() obs.sighting_count = observable_obj.get_sighting_count() if observable_obj.get_Observable_Source(): obs.observable_source = [MeasureSource.from_obj(x) for x in observable_obj.get_Observable_Source()] return obs
def test_observable_init(self): # Can pass an Object into the Observable constructor o = Object() obs = Observable(o) # Can pass an Event into the Observable constructor e = Event() obs = Observable(e) # Can pass an ObservableComposition into the Observable constructor oc = ObservableComposition() obs = Observable(oc) # Can pass an ObjectProperties subclass into the Observable constructor a = Address() obs = Observable(a) # Cannot pass a String into the Observable constructor. s = String() self.assertRaises(TypeError, Observable, s)
def from_obj(observable_obj): if not observable_obj: return None from cybox.core import PatternFidelity obs = Observable() obs.id_ = observable_obj.id obs.title = observable_obj.Title obs.description = StructuredText.from_obj(observable_obj.Description) obs.object_ = Object.from_obj(observable_obj.Object) obs.event = Event.from_obj(observable_obj.Event) obs.observable_composition = ObservableComposition.from_obj(observable_obj.Observable_Composition) obs.idref = observable_obj.idref obs.sighting_count = observable_obj.sighting_count if observable_obj.Observable_Source: obs.observable_source = [MeasureSource.from_obj(x) for x in observable_obj.Observable_Source] obs.keywords = Keywords.from_obj(observable_obj.Keywords) obs.pattern_fidelity = PatternFidelity.from_obj(observable_obj.Pattern_Fidelity) return obs
def test_empty_recursive_event(self): e = Event() e.description = "Foo" e.event = None self.assertTrue("Foo" in e.to_xml())