def test_open_not_existing(self): fake_file_path = '/fake_path/file_storage.data' fake_dir_name = os.path.dirname(fake_file_path) mock_chmod_calls = [ mock.call(fake_dir_name, stat.S_IRWXU | stat.S_IRGRP | stat.S_IXGRP), mock.call(fake_file_path, stat.S_IRUSR | stat.S_IWUSR) ] mock_open_calls = [ mock.call(fake_file_path, 'w'), mock.call(fake_file_path, 'r+'), ] self.mock_object(passwd.os.path, 'isfile', return_value=False) self.mock_object(passwd.os.path, 'isdir', return_value=False) mock_makedirs = self.mock_object(passwd.os, 'makedirs') mock_chmod = self.mock_object(passwd.os, 'chmod') mock_open = self.mock_object(passwd, 'open', return_value=mock.MagicMock()) file_storage = passwd.FileStorage(fake_file_path) file_storage.open() mock_makedirs.assert_called_with(fake_dir_name) mock_chmod.assert_has_calls(mock_chmod_calls, any_order=True) mock_open.assert_has_calls(mock_open_calls, any_order=True)
def test_open(self): fake_file_path = 'file_storage.data' self.mock_object(passwd.os.path, 'isfile', return_value=True) self.mock_object(passwd.os.path, 'isdir', return_value=True) mock_open = self.mock_object(passwd, 'open', mock.mock_open()) file_storage = passwd.FileStorage(fake_file_path) file_storage.open() mock_open.assert_called_once_with(fake_file_path, 'r+')
def test_save_not_dictionary(self): fake_file_name = 'file_storage.data' fake_file = self._get_fake_file('') fake_os_stat = self._get_fake_os_stat(0) self._mock_file_open(fake_file, fake_os_stat) file_storage = passwd.FileStorage(fake_file_name) file_storage.open() self.assertRaises(TypeError, file_storage.save, [])
def test_load_malformed_file(self): fake_file_name = 'file_storage.data' fake_file = self._get_fake_file('[1, 2, 3]') fake_os_stat = self._get_fake_os_stat(1) self._mock_file_open(fake_file, fake_os_stat) file_storage = passwd.FileStorage(fake_file_name) file_storage.open() self.assertRaises(ValueError, file_storage.load)
def test_close(self): fake_file_name = 'file_storage.data' fake_file = mock.MagicMock() self.mock_object(passwd.os.path, 'isfile', return_value=True) self.mock_object(passwd.os.path, 'isdir', return_value=True) self.mock_object(passwd, 'open', return_value=fake_file) file_storage = passwd.FileStorage(fake_file_name) file_storage.open() file_storage.close() fake_file.close.assert_called_once_with()
def test_load_empty_file(self): fake_file_name = 'file_storage.data' fake_file = self._get_fake_file() fake_os_stat = self._get_fake_os_stat(0) self._mock_file_open(fake_file, fake_os_stat) file_storage = passwd.FileStorage(fake_file_name) file_storage.open() result = file_storage.load() expected = {} self.assertEqual(expected, result)
def test_open_not_closed(self): fake_file_path = 'file_storage.data' fake_file = mock.MagicMock() mock_open_calls = [ mock.call(fake_file_path, 'r+'), mock.call(fake_file_path, 'r+'), ] self.mock_object(passwd.os.path, 'isfile', return_value=True) self.mock_object(passwd.os.path, 'isdir', return_value=True) mock_open = self.mock_object(passwd, 'open', return_value=fake_file) file_storage = passwd.FileStorage(fake_file_path) file_storage.open() file_storage.open() mock_open.assert_has_calls(mock_open_calls) fake_file.close.assert_called_once_with()
def test_save(self): fake_file_name = 'file_storage.data' fake_file = self._get_fake_file('') fake_os_stat = self._get_fake_os_stat(0) self._mock_file_open(fake_file, fake_os_stat) passwords = { 'resource1': { 'user1': 'resource1-user1', 'user2': 'resource1-user2', }, 'resource2': { 'user1': 'resource2-user1', 'user2': 'resource2-user2' } } fake_file_content = json.dumps(passwords) file_storage = passwd.FileStorage(fake_file_name) file_storage.open() file_storage.save(passwords) self.assertEqual(fake_file_content, fake_file.getvalue())
def test_load(self): passwords = { 'resource1': { 'user1': 'resource1-user1', 'user2': 'resource1-user2', }, 'resource2': { 'user1': 'resource2-user1', 'user2': 'resource2-user2' } } fake_file_name = 'file_storage.data' fake_file_content = json.dumps(passwords) fake_file = self._get_fake_file(fake_file_content) fake_os_stat = self._get_fake_os_stat(1) self._mock_file_open(fake_file, fake_os_stat) file_storage = passwd.FileStorage(fake_file_name) file_storage.open() result = file_storage.load() self.assertEqual(passwords, result)