def test_get_next(self): expected = self.next_record actual = NistBeacon.get_next(self.target_timestamp) self.assertTrue(actual.valid_signature) self.assertEqual(expected, actual) self.assertIsNot(expected, actual)
def test_get_next(self, requests_get_patched): mock_response = Mock(spec=Response) mock_response.status_code = 200 mock_response.text = self.expected_next.xml requests_get_patched.return_value = mock_response next_record = NistBeacon.get_next(self.reference_timestamp) self.assertEqual(self.expected_next, next_record)
def iterate_over_records(): db_file_name = 'nist.db' # Setup the database db = sqlite3.connect(db_file_name) cursor = db.cursor() cursor.execute( 'CREATE TABLE IF NOT EXISTS "beacon_values" (' 'timestamp INTEGER,' 'output_value TEXT,' 'seed_value TEXT,' 'previous_output_value TEXT,' 'status_code TEXT,' 'version TEXT,' 'signature_value TEXT,' 'frequency INTEGER,' 'PRIMARY KEY(timestamp)' ')' ) db.commit() db.close() # IF rows db = sqlite3.connect(db_file_name) cursor = db.cursor() cursor.execute( 'SELECT timestamp FROM beacon_values ORDER BY timestamp DESC LIMIT 1;' ) result = cursor.fetchone() db.close() if result: # Go to the next record from the last timestamp in the database record = NistBeacon.get_next(result[0]) else: # We begin at record zero record = NistBeacon.get_first_record() # Open the database db = sqlite3.connect(db_file_name) cursor = db.cursor() while True: if record is None: print("Got 'None' back for a record. Stopping.") break print( "{0} - {1} - {2}".format( record.timestamp, record.valid_signature, record.output_value, ) ) # Insert this record cursor.execute( 'INSERT INTO beacon_values(' 'timestamp, output_value, seed_value, previous_output_value, ' 'status_code, version, signature_value, frequency' ')' 'VALUES(' ':timestamp, :output_value, :seed_value, :previous_output_value,' ':status_code, :version, :signature_value, :frequency' ')', { 'timestamp': record.timestamp, 'output_value': record.output_value, 'seed_value': record.seed_value, 'previous_output_value': record.previous_output_value, 'status_code': record.status_code, 'version': record.version, 'signature_value': record.signature_value, 'frequency': record.frequency, } ) db.commit() # Advance to the next record record = NistBeacon.get_next(record.timestamp) # Close out db.close()