init
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
import unittest
|
||||
import tempfile
|
||||
import shutil
|
||||
import os
|
||||
import json
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
# Add api directory to path
|
||||
api_dir = Path(__file__).parent.parent / 'api'
|
||||
sys.path.insert(0, str(api_dir))
|
||||
|
||||
from peer_registry import PeerRegistry
|
||||
|
||||
class TestPeerRegistry(unittest.TestCase):
|
||||
def setUp(self):
|
||||
# Use a temp directory for the peers file
|
||||
self.test_dir = tempfile.mkdtemp()
|
||||
self.registry = PeerRegistry(data_dir=self.test_dir, config_dir=self.test_dir)
|
||||
|
||||
def tearDown(self):
|
||||
shutil.rmtree(self.test_dir)
|
||||
|
||||
def test_initialization_and_empty(self):
|
||||
self.assertEqual(self.registry.list_peers(), [])
|
||||
|
||||
def test_add_and_get_peer(self):
|
||||
peer = {'peer': 'peer1', 'ip': '10.0.0.2'}
|
||||
result = self.registry.add_peer(peer)
|
||||
self.assertTrue(result)
|
||||
self.assertEqual(self.registry.get_peer('peer1'), peer)
|
||||
# Adding duplicate should fail
|
||||
result = self.registry.add_peer(peer)
|
||||
self.assertFalse(result)
|
||||
# Defensive: check peer_obj is not None
|
||||
peer_obj = self.registry.get_peer('peer1')
|
||||
self.assertIsNotNone(peer_obj)
|
||||
self.assertEqual(peer_obj['ip'], '10.0.0.2')
|
||||
|
||||
def test_remove_peer(self):
|
||||
peer = {'peer': 'peer1', 'ip': '10.0.0.2'}
|
||||
self.registry.add_peer(peer)
|
||||
result = self.registry.remove_peer('peer1')
|
||||
self.assertTrue(result)
|
||||
self.assertIsNone(self.registry.get_peer('peer1'))
|
||||
# Removing non-existent peer should return False
|
||||
result = self.registry.remove_peer('peer1')
|
||||
self.assertFalse(result)
|
||||
|
||||
def test_update_peer_ip(self):
|
||||
peer = {'peer': 'peer1', 'ip': '10.0.0.2'}
|
||||
self.registry.add_peer(peer)
|
||||
result = self.registry.update_peer_ip('peer1', '10.0.0.3')
|
||||
self.assertTrue(result)
|
||||
peer_obj = self.registry.get_peer('peer1')
|
||||
self.assertIsNotNone(peer_obj)
|
||||
self.assertEqual(peer_obj['ip'], '10.0.0.3')
|
||||
# Updating non-existent peer should return False
|
||||
result = self.registry.update_peer_ip('peer2', '10.0.0.4')
|
||||
self.assertFalse(result)
|
||||
|
||||
def test_persistence(self):
|
||||
peer = {'peer': 'peer1', 'ip': '10.0.0.2'}
|
||||
self.registry.add_peer(peer)
|
||||
# Create a new registry instance to test loading from file
|
||||
new_registry = PeerRegistry(data_dir=self.test_dir, config_dir=self.test_dir)
|
||||
peer_obj = new_registry.get_peer('peer1')
|
||||
self.assertIsNotNone(peer_obj)
|
||||
self.assertEqual(peer_obj['ip'], '10.0.0.2')
|
||||
|
||||
def test_corrupt_file_handling(self):
|
||||
# Write corrupt JSON to the peers file
|
||||
peers_file = os.path.join(self.test_dir, 'peers.json')
|
||||
with open(peers_file, 'w') as f:
|
||||
f.write('{bad json')
|
||||
# Should not raise, should load as empty
|
||||
registry = PeerRegistry(data_dir=self.test_dir, config_dir=self.test_dir)
|
||||
self.assertEqual(registry.list_peers(), [])
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user