def test_create_delete_create(self): isd = ISD.objects.create(isd_id=1, label='one') as1_id = 'ffaa:0:0101' as1_ia = '%i-%s' % (isd.isd_id, as1_id) AS.objects.create(isd, as1_id, is_core=True) trc_v1 = utils.check_trc_and_certs(self, 1, {as1_ia}, expected_version=1) AS.objects.filter(as_id=as1_id).delete() isd.refresh_from_db() trc_v2 = utils.check_trc_and_certs(self, 1, {}, expected_version=2, prev_trc=trc_v1) AS.objects.create(isd, as1_id, is_core=True) utils.check_trc_and_certs(self, 1, {as1_ia}, expected_version=3, prev_trc=trc_v2)
def test_create_initial(self): isd = ISD.objects.get(isd_id=19) _reset_trc_and_certificates(isd) isd.update_trc_and_certificates() utils.check_trc_and_certs(self, 19, self.isd19_core_ases, expected_version=1)
def test_update_core_cert(self): isd = ISD.objects.get(isd_id=19) utils.check_trc_and_certs(self, 19, self.isd19_core_ases, expected_version=1) AS.update_core_as_keys(isd.ases.filter(is_core=True)) utils.check_trc_and_certs(self, 19, self.isd19_core_ases, expected_version=2)
def test_create_initial(self): isd = ISD.objects.get(isd_id=19) _reset_trc_and_certificates(isd) self.assertEqual(isd.trc, None) self.assertEqual(isd.trc_priv_keys, None) isd.init_trc_and_certificates() utils.check_trc_and_certs(self, 19, self.isd19_core_ases, expected_version=1)
def test_random_mutations(self): NUM_MUTATIONS = 66 random.seed(5) isd_id = 1 def make_as_id(i): return "ffaa:0:%x" % i ISD.objects.create(isd_id=isd_id, label='some') expected_serial_version = 1 expected_set = set() for i in range(NUM_MUTATIONS): if not expected_set or random.getrandbits(1): # add one: i+1 has not been used yet as_id = make_as_id(i + 1) expected_set.add(as_id) AS.objects.create(ISD.objects.get(isd_id=isd_id), as_id, is_core=True) else: as_id = random.sample(expected_set, 1)[0] expected_set.remove(as_id) # Let's test both ways: if random.getrandbits(1): AS.objects.filter(as_id=as_id).delete() else: AS.objects.get(as_id=as_id).delete() # Skip check and version increment if expected_set is empty -- no TRCs are created # if there are no core ASes. if expected_set: utils.check_trc_and_certs( self, isd_id, expected_set, expected_version=(expected_serial_version, 1)) expected_serial_version += 1
def test_create_delete_create(self): isd = ISD.objects.create(isd_id=1, label='one') as1_id = 'ffaa:0:101' as2_id = 'ffaa:0:102' AS.objects.create(isd, as1_id, is_core=True) utils.check_trc_and_certs(self, 1, {as1_id}, expected_version=1) AS.objects.create(isd, as2_id, is_core=True) utils.check_trc_and_certs(self, 1, {as1_id, as2_id}, expected_version=2) AS.objects.filter(as_id=as1_id).delete() utils.check_trc_and_certs(self, 1, {as2_id}, expected_version=3) AS.objects.create(isd, as1_id, is_core=True) utils.check_trc_and_certs(self, 1, {as1_id, as2_id}, expected_version=4)
def test_random_mutations(self): NUM_MUTATIONS = 66 random.seed(5) isd_id = 1 def make_as_id(i): return "ffaa:0:%.4x" % i def ia(as_id): return "%i-%s" % (isd_id, as_id) ISD.objects.create(isd_id=isd_id, label='some') prev_trc = None expected_version = 1 expected_set = set() for i in range(NUM_MUTATIONS): if not expected_set or random.getrandbits(1): # add one: i has not been used yet as_id = make_as_id(i) expected_set.add(as_id) AS.objects.create(ISD.objects.get(isd_id=isd_id), as_id, is_core=True) else: as_id = random.sample(expected_set, 1)[0] expected_set.remove(as_id) # Let's test both ways: if random.getrandbits(1): AS.objects.filter(as_id=as_id).delete() else: AS.objects.get(as_id=as_id).delete() trc = utils.check_trc_and_certs( self, isd_id, {ia(as_id) for as_id in expected_set}, expected_version=expected_version, prev_trc=prev_trc) expected_version += 1 prev_trc = trc
def test_create_update(self): isd = ISD.objects.get(isd_id=19) utils.check_trc_and_certs(self, 19, self.isd19_core_ases, expected_version=(1, 1)) isd.update_trc_and_certificates() utils.check_trc_and_certs(self, 19, self.isd19_core_ases, expected_version=(2, 1)) isd.update_trc_and_certificates() utils.check_trc_and_certs(self, 19, self.isd19_core_ases, expected_version=(3, 1))