def test_cluster_raises(self):
     self.vpc_mesh_single_cluster.to_raise(
         sut.BadTerraformPeeringState("This is wrong")
     )
     rs = sut.build_desired_state_vpc_mesh(self.clusters, self.ocm_map,
                                           self.awsapi)
     self.assertEqual(rs, ([], True))
    def test_cluster_fails(self):
        self.build_single_cluster.to_raise(
            sut.BadTerraformPeeringState("I have failed")
        )

        self.assertEqual(
            sut.build_desired_state_vpc(self.clusters, self.ocm_map, self.awsapi),
            ([], True),
        )
    def test_error_persists(self):
        self.clusters.append(self.clusters[0].copy())
        self.clusters[1]["name"] = "afailingcluster"
        self.ocm_map["afailingcluster"] = self.ocm
        self.build_single_cluster.for_call(
            self.clusters[0], self.ocm, self.awsapi
        ).to_return_value([{"a dict": "a value"}]).and_assert_called_once()
        self.mock_callable(sut, "build_desired_state_vpc_single_cluster").for_call(
            self.clusters[1], self.ocm, self.awsapi
        ).to_raise(sut.BadTerraformPeeringState("Fail!")).and_assert_called_once()

        self.assertEqual(
            sut.build_desired_state_vpc(self.clusters, self.ocm_map, self.awsapi),
            ([{"a dict": "a value"}], True),
        )
def test_c2c_one_cluster_failing_recoverable(mocker):
    """
    in this scenario, the handling of a single cluster fails with known
    exceptions
    """
    build_desired_state_single_cluster = mocker.patch.object(
        sut, "build_desired_state_single_cluster"
    )
    build_desired_state_single_cluster.side_effect = sut.BadTerraformPeeringState(
        "something bad"
    )

    result, error = sut.build_desired_state_all_clusters([{"name": "cluster"}], {}, {})

    assert not result
    assert error