def test_check_wal_archive_missing_bucket(
     self,
     mock_cloud_interface,
     mock_cloud_backup_catalog,
 ):
     """Verify a missing bucket passes the check"""
     mock_cloud_interface.return_value.bucket_exists = False
     cloud_check_wal_archive.main(["cloud_storage_url", "test_server"])
     mock_cloud_backup_catalog.assert_not_called()
 def test_exits_on_connectivity_test(self, get_cloud_interface_mock):
     """If the -t option is used we check connectivity and exit."""
     cloud_interface_mock = get_cloud_interface_mock.return_value
     cloud_interface_mock.test_connectivity.return_value = True
     with pytest.raises(SystemExit) as exc:
         cloud_check_wal_archive.main(
             ["cloud_storage_url", "test_server", "-t"])
     assert exc.value.code == 0
     cloud_interface_mock.test_connectivity.assert_called_once()
 def test_check_wal_archive_failed_connectivity(self, mock_cloud_interface,
                                                caplog):
     """Verify the check errors if we cannot connect to the cloud provider"""
     mock_cloud_interface.return_value.test_connectivity.return_value = False
     with pytest.raises(SystemExit) as exc:
         cloud_check_wal_archive.main(["cloud_storage_url", "test_server"])
     assert 2 == exc.value.code
     mock_cloud_interface.return_value.test_connectivity.assert_called_once_with(
     )
 def test_check_wal_archive_no_args(
     self,
     mock_cloud_interface,
     mock_cloud_backup_catalog,
     mock_check_archive_usable,
     cloud_backup_catalog,
 ):
     """Verify xlog.check_archive_usable is called with no additional args."""
     mock_cloud_interface.return_value.bucket_exists = True
     mock_cloud_backup_catalog.return_value = cloud_backup_catalog
     cloud_check_wal_archive.main(["cloud_storage_url", "test_server"])
     mock_check_archive_usable.assert_called_once_with(
         ["000000010000000000000001"],
         timeline=None,
     )
 def test_check_wal_archive_exception(
     self,
     mock_cloud_interface,
     mock_cloud_backup_catalog,
     mock_check_archive_usable,
     cloud_backup_catalog,
     caplog,
 ):
     """Verify log output when there is an error checking the wal archive"""
     mock_cloud_interface.return_value.bucket_exists = True
     mock_cloud_backup_catalog.return_value = cloud_backup_catalog
     mock_check_archive_usable.side_effect = Exception("oh dear")
     with pytest.raises(SystemExit) as exc:
         cloud_check_wal_archive.main(["cloud_storage_url", "test_server"])
     assert 4 == exc.value.code
     assert "Barman cloud WAL archive check exception: oh dear" in caplog.text
 def test_check_wal_archive_content_error(
     self,
     mock_cloud_interface,
     mock_cloud_backup_catalog,
     mock_check_archive_usable,
     cloud_backup_catalog,
     caplog,
 ):
     """Verify log output when wal archive check fails"""
     mock_cloud_interface.return_value.bucket_exists = True
     mock_cloud_backup_catalog.return_value = cloud_backup_catalog
     mock_check_archive_usable.side_effect = WalArchiveContentError(
         "oh dear")
     with pytest.raises(SystemExit) as exc:
         cloud_check_wal_archive.main(["cloud_storage_url", "test_server"])
     assert 1 == exc.value.code
     assert "WAL archive check failed for server test_server: oh dear" in caplog.text