Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions .github/workflows/pylint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,9 @@ on:
push:
paths:
- '**.py'
branches:
- main
pull_request:
paths:
- '**.py'
branches:
- main

jobs:
analyze:
Expand Down
18 changes: 14 additions & 4 deletions functions/hello/main.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,21 @@
"""Main module for the hello function handler."""

from crowdstrike.foundry.function import Function, Request, Response, APIError

func = Function.instance()
FUNC = Function.instance()


# Handler hello
@func.handler(method="POST", path="/hello")
@FUNC.handler(method="POST", path="/hello")
def on_post(request: Request) -> Response:
"""
Handle POST requests to /hello endpoint.

Args:
request: The incoming request object containing the request body.

Returns:
Response: JSON response with greeting or error message.
"""
#
# Replace the following example code with your handler code
#
Expand All @@ -29,4 +39,4 @@ def on_post(request: Request) -> Response:


if __name__ == "__main__":
func.run()
FUNC.run()
20 changes: 13 additions & 7 deletions functions/hello/test_main.py
Original file line number Diff line number Diff line change
@@ -1,42 +1,48 @@
"""Test module for the hello function handler."""

import importlib
import unittest
from unittest.mock import patch

import main
from crowdstrike.foundry.function import Request


def mock_handler(*args, **kwargs):
def mock_handler(*_args, **_kwargs):
"""Mock handler decorator for testing."""
def identity(func):
return func

return identity


class FnTestCase(unittest.TestCase):
"""Test case class for function handler tests."""

def setUp(self):
"""Set up test fixtures before each test method."""
patcher = patch("crowdstrike.foundry.function.Function.handler", new=mock_handler)
self.addCleanup(patcher.stop)
self.handler_patch = patcher.start()

import importlib
import main
importlib.reload(main)

def test_on_post_success(self):
from main import on_post
"""Test successful POST request with valid name in body."""
request = Request()
request.body = {
"name": "Test User"
}

response = on_post(request)
response = main.on_post(request)
self.assertEqual(response.code, 200)
self.assertEqual(response.body["greeting"], "Hello Test User! It is nice to see you.")

def test_on_post_missing_name(self):
from main import on_post
"""Test POST request with missing name in body returns error."""
request = Request()

response = on_post(request)
response = main.on_post(request)
self.assertEqual(response.code, 400)
self.assertEqual(len(response.errors), 1)
self.assertEqual(response.errors[0].message, "missing name from request body")
Expand Down
Loading