import json import os import tarfile from mock import MagicMock, patch from nose.tools import assert_raises from paradrop.backend import network_api @patch('__builtin__.open') def test_read_leases(open): file_object = MagicMock() file_object.__enter__.return_value = [ "1480650200 00:11:22:33:44:55 192.168.128.130 android-ffeeddccbbaa9988 *", "1480640500 00:22:44:66:88:aa 192.168.128.170 someones-iPod 01:00:22:44:66:88:aa" ] open.return_value = file_object leases = network_api.read_leases("/") assert len(leases) == 2 assert leases[0]['ip_addr'] == "192.168.128.130" def test_update_lease(): leases = { '00:11:22:33:44:55': { 'as_of': 100, 'mac_addr': '00:11:22:33:44:55' }, '00:22:44:66:88:aa': { 'as_of': 100, 'mac_addr': '00:22:44:66:88:aa' } } # An old entry should not replace a newer one. old_entry = { 'as_of': 50, 'mac_addr': '00:11:22:33:44:55' } result = network_api.update_lease(leases, old_entry) assert result['as_of'] == 100 assert leases['00:11:22:33:44:55']['as_of'] == 100 # A newer entry should take the place of an older one. old_entry = { 'as_of': 200, 'mac_addr': '00:11:22:33:44:55' } result = network_api.update_lease(leases, old_entry) assert result['as_of'] == 200 assert leases['00:11:22:33:44:55']['as_of'] == 200 # A previously-unseen address should be added. old_entry = { 'as_of': 0, 'mac_addr': '00:33:66:99:cc:ff' } result = network_api.update_lease(leases, old_entry) assert result['as_of'] == 0 assert len(leases) == 3 def test_NetworkApi_get_devices(): api = network_api.NetworkApi() request = MagicMock() data = api.get_devices(request) assert data is not None