def test_correct_name(self, mock_hook): op = CloudFunctionDeleteFunctionOperator( name="projects/project_name/locations/project_location/functions" "/function_name", task_id="id") op.execute(None) mock_hook.assert_called_once_with(api_version='v1', gcp_conn_id='google_cloud_default')
def test_invalid_name(self, mock_hook): with pytest.raises(AttributeError) as ctx: op = CloudFunctionDeleteFunctionOperator(name="invalid_name", task_id="id") op.execute(None) err = ctx.value assert str( err ) == f'Parameter name must match pattern: {FUNCTION_NAME_PATTERN}' mock_hook.assert_not_called()
def test_invalid_name(self, mock_hook): with self.assertRaises(AttributeError) as cm: op = CloudFunctionDeleteFunctionOperator(name="invalid_name", task_id="id") op.execute(None) err = cm.exception self.assertEqual( str(err), 'Parameter name must match pattern: {}'.format( FUNCTION_NAME_PATTERN)) mock_hook.assert_not_called()
def test_gcf_error_silenced_when_function_doesnt_exist(self, mock_hook): op = CloudFunctionDeleteFunctionOperator(name=self._FUNCTION_NAME, task_id="id") mock_hook.return_value.delete_function.side_effect = mock.Mock( side_effect=HttpError(resp=MOCK_RESP_404, content=b'not found')) op.execute(None) mock_hook.assert_called_once_with(api_version='v1', gcp_conn_id='google_cloud_default') mock_hook.return_value.delete_function.assert_called_once_with( 'projects/project_name/locations/project_location/functions/function_name' )
def test_delete_execute(self, mock_hook): mock_hook.return_value.delete_function.return_value = \ self._DELETE_FUNCTION_EXPECTED op = CloudFunctionDeleteFunctionOperator(name=self._FUNCTION_NAME, task_id="id") result = op.execute(None) mock_hook.assert_called_once_with(api_version='v1', gcp_conn_id='google_cloud_default') mock_hook.return_value.delete_function.assert_called_once_with( 'projects/project_name/locations/project_location/functions/function_name' ) self.assertEqual(result['name'], self._FUNCTION_NAME)
def test_non_404_gcf_error_bubbled_up(self, mock_hook): op = CloudFunctionDeleteFunctionOperator(name=self._FUNCTION_NAME, task_id="id") resp = type('', (object, ), {"status": 500})() mock_hook.return_value.delete_function.side_effect = mock.Mock( side_effect=HttpError(resp=resp, content=b'error')) with self.assertRaises(HttpError): op.execute(None) mock_hook.assert_called_once_with(api_version='v1', gcp_conn_id='google_cloud_default') mock_hook.return_value.delete_function.assert_called_once_with( 'projects/project_name/locations/project_location/functions/function_name' )
def test_empty_name(self, mock_hook): mock_hook.return_value.delete_function.return_value = self._DELETE_FUNCTION_EXPECTED with pytest.raises(AttributeError) as ctx: CloudFunctionDeleteFunctionOperator(name="", task_id="id") err = ctx.value assert str(err) == 'Empty parameter: name' mock_hook.assert_not_called()
def test_empty_name(self, mock_hook): mock_hook.return_value.delete_function.return_value = self._DELETE_FUNCTION_EXPECTED with self.assertRaises(AttributeError) as cm: CloudFunctionDeleteFunctionOperator(name="", task_id="id") err = cm.exception self.assertEqual(str(err), 'Empty parameter: name') mock_hook.assert_not_called()
catchup=False, tags=['example'], ) as dag: # [START howto_operator_gcf_deploy] deploy_task = CloudFunctionDeployFunctionOperator( task_id="gcf_deploy_task", project_id=GCP_PROJECT_ID, location=GCP_LOCATION, body=body, validate_body=GCP_VALIDATE_BODY, ) # [END howto_operator_gcf_deploy] # [START howto_operator_gcf_deploy_no_project_id] deploy2_task = CloudFunctionDeployFunctionOperator( task_id="gcf_deploy2_task", location=GCP_LOCATION, body=body, validate_body=GCP_VALIDATE_BODY ) # [END howto_operator_gcf_deploy_no_project_id] # [START howto_operator_gcf_invoke_function] invoke_task = CloudFunctionInvokeFunctionOperator( task_id="invoke_task", project_id=GCP_PROJECT_ID, location=GCP_LOCATION, input_data={}, function_id=GCF_SHORT_FUNCTION_NAME, ) # [END howto_operator_gcf_invoke_function] # [START howto_operator_gcf_delete] delete_task = CloudFunctionDeleteFunctionOperator(task_id="gcf_delete_task", name=FUNCTION_NAME) # [END howto_operator_gcf_delete] deploy_task >> deploy2_task >> invoke_task >> delete_task