def test_validLEI_should_return_a_boolean(self): invalid_types = [None, "", list(), dict(), int()] for invalid_type in invalid_types: with self.subTest(invalid_type=invalid_type): valid_phone = SpiderFootHelpers.validLEI(invalid_type) self.assertIsInstance(valid_phone, bool) self.assertFalse(valid_phone) valid_lei = SpiderFootHelpers.validLEI('7ZW8QJWVPR4P1J1KQYZZ') self.assertIsInstance(valid_lei, bool) self.assertFalse(valid_lei) valid_lei = SpiderFootHelpers.validLEI('7ZW8QJWVPR4P1J1KQY45') self.assertIsInstance(valid_lei, bool) self.assertTrue(valid_lei)
def handleEvent(self, event): eventName = event.eventType srcModuleName = event.module eventData = event.data if eventData in self.results: self.debug(f"Skipping {eventData}, already checked.") return self.results[eventData] = True self.debug(f"Received event, {eventName}, from {srcModuleName}") leis = list() if eventName == "LEI": leis.append(eventData) elif eventName == "COMPANY_NAME": res = self.searchAutocompletions(eventData) if res is None: self.debug(f"Found no results for {eventData}") return e = SpiderFootEvent("RAW_RIR_DATA", str(res), self.__name__, event) self.notifyListeners(e) for record in res: relationships = record.get('relationships') if not relationships: continue lei_records = relationships.get('lei-records') if not lei_records: continue data = lei_records.get('data') if not data: continue lei = data.get('id') if not SpiderFootHelpers.validLEI(lei): continue leis.append(lei) self.info(f"Found {len(leis)} LEIs matching {eventData}") for lei in set(leis): if lei in self.results: continue if not SpiderFootHelpers.validLEI(lei): continue e = SpiderFootEvent("LEI", lei, self.__name__, event) self.notifyListeners(e) self.results[lei] = True res = self.retrieveRecord(lei) if not res: self.debug(f"Found no results for {eventData}") return attributes = res.get('attributes') if not attributes: continue entity = attributes.get('entity') if not entity: continue legal_name = entity.get('legalName') if legal_name: entity_name = legal_name.get('value') if entity_name: e = SpiderFootEvent("COMPANY_NAME", entity_name, self.__name__, event) self.notifyListeners(e) addresses = list() address = entity.get('legalAddress') if address.get('addressLines'): address_lines = ', '.join( filter(None, address.get('addressLines'))) location = ', '.join( filter(None, [ address_lines, address.get('city'), address.get('region'), address.get('country'), address.get('postalCode') ])) if location: addresses.append(location) address = entity.get('headquartersAddress') if address.get('addressLines'): address_lines = ', '.join( filter(None, address.get('addressLines'))) location = ', '.join( filter(None, [ address_lines, address.get('city'), address.get('region'), address.get('country'), address.get('postalCode') ])) if location: addresses.append(location) for address in set(addresses): e = SpiderFootEvent("PHYSICAL_ADDRESS", address, self.__name__, event) self.notifyListeners(e)