def searchBase(self, id=None, eventType=None, value=None): regex = "" if [id, eventType, value].count('') == 2 or \ [id, eventType, value].count(None) == 2: return None if value.startswith("/") and value.endswith("/"): regex = value[1:len(value) - 1] value = "" value = value.replace('*', '%') if value in [None, ""] and regex in [None, ""]: value = "%" regex = "" dbh = SpiderFootDb(self.config) criteria = { 'scan_id': None if id == '' else id, 'type': None if eventType == '' else eventType, 'value': None if value == '' else value, 'regex': None if regex == '' else regex } data = dbh.search(criteria) retdata = [] for row in data: lastseen = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(row[0])) escapeddata = cgi.escape(row[1]) escapedsrc = cgi.escape(row[2]) retdata.append([lastseen, escapeddata, escapedsrc, row[3], row[5], row[6], row[7], row[8], row[10], row[11], row[4], row[13], row[14]]) return retdata
def test_search_should_return_a_list(self): """ Test search(self, criteria, filterFp=False) """ sfdb = SpiderFootDb(self.default_options, False) criteria = {'scan_id': "", 'type': "", 'value': "", 'regex': ""} search_results = sfdb.search(criteria, False) self.assertIsInstance(search_results, list) self.assertFalse(search_results)
def test_search_argument_criteria_of_invalid_type_should_raise_TypeError(self): """ Test search(self, criteria, filterFp=False) """ sfdb = SpiderFootDb(self.default_options, False) invalid_types = [None, "", list(), int()] for invalid_type in invalid_types: with self.subTest(invalid_type=invalid_type): with self.assertRaises(TypeError) as cm: search_results = sfdb.search(invalid_type, False)
def test_search_invalid_criteria_should_raise(self): """ Test search(self, criteria, filterFp=False) """ sfdb = SpiderFootDb(self.default_options, False) invalid_types = [None, "", list()] for invalid_type in invalid_types: with self.subTest(invalid_type=invalid_type): with self.assertRaises(TypeError) as cm: search_results = sfdb.search(invalid_type, False) criteria = { 'scan_id': None, 'type': None, 'value': None, 'regex': None } with self.assertRaises(ValueError) as cm: search_results = sfdb.search(criteria, False)
def test_search_argument_criteria_one_criteria_should_raise_ValueError(self): """ Test search(self, criteria, filterFp=False) """ sfdb = SpiderFootDb(self.default_options, False) criteria = { 'type': "example type" } with self.assertRaises(ValueError) as cm: search_results = sfdb.search(criteria, False)
def searchBase(self, id=None, eventType=None, value=None): """Search Args: id: TBD eventType: TBD value: TBD Returns: list: search results """ retdata = [] regex = "" if [id, eventType, value].count('') == 3 or [id, eventType, value ].count(None) == 3: return retdata if value.startswith("/") and value.endswith("/"): regex = value[1:len(value) - 1] value = "" value = value.replace('*', '%') if value in [None, ""] and regex in [None, ""]: value = "%" regex = "" dbh = SpiderFootDb(self.config) criteria = { 'scan_id': None if id == '' else id, 'type': None if eventType == '' else eventType, 'value': None if value == '' else value, 'regex': None if regex == '' else regex } try: data = dbh.search(criteria) except Exception: return retdata for row in data: lastseen = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(row[0])) escapeddata = html.escape(row[1]) escapedsrc = html.escape(row[2]) retdata.append([ lastseen, escapeddata, escapedsrc, row[3], row[5], row[6], row[7], row[8], row[10], row[11], row[4], row[13], row[14] ]) return retdata
def test_search_argument_criteria_key_of_invalid_type_should_raise_TypeError(self): """ Test search(self, criteria, filterFp=False) """ sfdb = SpiderFootDb(self.default_options, False) criteria = { 'type': "example type", 'value': "example value", 'regex': [] } with self.assertRaises(TypeError) as cm: search_results = sfdb.search(criteria, False)