def test_create_volume_snapshot_not_ready(self, mock_boto3): """Test that volume creation aborts when snapshot is not ready.""" zone = helper.generate_dummy_availability_zone() mock_snapshot = helper.generate_mock_snapshot(state='pending') mock_ec2 = mock_boto3.resource.return_value mock_ec2.Snapshot.return_value = mock_snapshot with self.assertRaises(SnapshotNotReadyException): ec2.create_volume(mock_snapshot.snapshot_id, zone) mock_boto3.resource.assert_called_once_with('ec2') mock_ec2.create_volume.assert_not_called()
def test_create_volume_snapshot_has_error(self, mock_boto3): """Test that volume creation aborts when snapshot has error.""" zone = helper.generate_dummy_availability_zone() mock_snapshot = helper.generate_mock_snapshot(state='error') mock_ec2 = mock_boto3.resource.return_value mock_ec2.Snapshot.return_value = mock_snapshot with self.assertRaises(AwsSnapshotError): ec2.create_volume(mock_snapshot.snapshot_id, zone) mock_boto3.resource.assert_called_once_with('ec2') mock_ec2.create_volume.assert_not_called()
def test_create_volume_snapshot_ready(self, mock_boto3): """Test that volume creation starts when snapshot is ready.""" zone = helper.generate_dummy_availability_zone() mock_snapshot = helper.generate_mock_snapshot() mock_volume = helper.generate_mock_volume() mock_ec2 = mock_boto3.resource.return_value mock_ec2.Snapshot.return_value = mock_snapshot mock_ec2.create_volume.return_value = mock_volume volume_id = ec2.create_volume(mock_snapshot.snapshot_id, zone) mock_ec2.create_volume.assert_called_with( SnapshotId=mock_snapshot.snapshot_id, AvailabilityZone=zone) mock_boto3.resource.assert_called_once_with('ec2') self.assertEqual(volume_id, mock_volume.id)