-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathtest_ipfs_integration.py
83 lines (63 loc) · 3.62 KB
/
test_ipfs_integration.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import unittest
from unittest.mock import patch, MagicMock
from holographic_data_storage.ipfs_integration import IPFSIntegration
class TestIPFSIntegration(unittest.TestCase):
def setUp(self):
"""Set up an IPFSIntegration instance for testing."""
self.ipfs_integration = IPFSIntegration(ipfs_address='http://localhost:5001')
@patch('holographic_data_storage.ipfs_integration.ipfshttpclient')
def test_upload_data_success(self, mock_ipfs_client):
"""Test successful upload of data to IPFS."""
mock_ipfs_client.connect.return_value.add_bytes.return_value = {'cid': 'QmTestCID'}
data = b'Test data for IPFS upload.'
cid = self.ipfs_integration.upload_data(data)
self.assertEqual(cid, 'QmTestCID')
mock_ipfs_client.connect.assert_called_once()
mock_ipfs_client.connect.return_value.add_bytes.assert_called_once_with(data)
@patch('holographic_data_storage.ipfs_integration.ipfshttpclient')
def test_upload_data_failure(self, mock_ipfs_client):
"""Test failure of data upload to IPFS."""
mock_ipfs_client.connect.return_value.add_bytes.side_effect = Exception("Upload failed")
data = b'Test data for IPFS upload.'
cid = self.ipfs_integration.upload_data(data)
self.assertIsNone(cid)
mock_ipfs_client.connect.assert_called_once()
mock_ipfs_client.connect.return_value.add_bytes.assert_called_once_with(data)
@patch('holographic_data_storage.ipfs_integration.ipfshttpclient')
def test_retrieve_data_success(self, mock_ipfs_client):
"""Test successful retrieval of data from IPFS."""
mock_ipfs_client.connect.return_value.cat.return_value = b'Test data from IPFS.'
cid = 'QmTestCID'
data = self.ipfs_integration.retrieve_data(cid)
self.assertEqual(data, b'Test data from IPFS.')
mock_ipfs_client.connect.assert_called_once()
mock_ipfs_client.connect.return_value.cat.assert_called_once_with(cid)
@patch('holographic_data_storage.ipfs_integration.ipfshttpclient')
def test_retrieve_data_failure(self, mock_ipfs_client):
"""Test failure of data retrieval from IPFS."""
mock_ipfs_client.connect.return_value.cat.side_effect = Exception("Retrieval failed")
cid = 'QmTestCID'
data = self.ipfs_integration.retrieve_data(cid)
self.assertIsNone(data)
mock_ipfs_client.connect.assert_called_once()
mock_ipfs_client.connect.return_value.cat.assert_called_once_with(cid)
@patch('holographic_data_storage.ipfs_integration.ipfshttpclient')
def test_pin_data_success(self, mock_ipfs_client):
"""Test successful pinning of data to IPFS."""
mock_ipfs_client.connect.return_value.pin.add.return_value = None
cid = 'QmTestCID'
success = self.ipfs_integration.pin_data(cid)
self.assertTrue(success)
mock_ipfs_client.connect.assert_called_once()
mock_ipfs_client.connect.return_value.pin.add.assert_called_once_with(cid)
@patch('holographic_data_storage.ipfs_integration.ipfshttpclient')
def test_unpin_data_success(self, mock_ipfs_client):
"""Test successful unpinning of data from IPFS."""
mock_ipfs_client.connect.return_value.pin.rm.return_value = None
cid = 'QmTestCID'
success = self.ipfs_integration.unpin_data(cid)
self.assertTrue(success)
mock_ipfs_client.connect.assert_called_once()
mock_ipfs_client.connect.return_value.pin.rm.assert_called_once_with(cid)
if __name__ == "__main__":
unittest.main()