Created
August 24, 2021 15:16
-
-
Save justinyoo/d00aefe95ff7a5292121fc06b604cfad to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public static class DefaultHttpTrigger | |
{ | |
[FunctionName("DefaultHttpTrigger")] | |
[OpenApiOperation(operationId: "greeting", tags: new[] { "greeting" }, Summary = "Greetings", Description = "This shows a welcome message.", Visibility = OpenApiVisibilityType.Important)] | |
[OpenApiSecurity("function_key", SecuritySchemeType.ApiKey, Name = "code", In = OpenApiSecurityLocationType.Query)] | |
[OpenApiParameter("name", Type = typeof(string), In = ParameterLocation.Query, Visibility = OpenApiVisibilityType.Important)] | |
[OpenApiResponseWithBody(statusCode: HttpStatusCode.OK, contentType: "application/json", bodyType: typeof(Greeting), Summary = "The response", Description = "This returns the response")] | |
public static async Task<IActionResult> Run( | |
[HttpTrigger(AuthorizationLevel.Function, "get", Route = "greetings")] HttpRequest req, | |
ILogger log) | |
{ | |
log.LogInformation("C# HTTP trigger function processed a request."); | |
string name = req.Query["name"]; | |
var message = $"Hello, {name}!"; | |
var instance = new Greeting() { Message = message }; | |
var result = new OkObjectResult(instance); | |
return await Task.FromResult(result).ConfigureAwait(false); | |
} | |
} | |
public class Greeting | |
{ | |
public string Message { get; set; } | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"openapi": "3.0.1", | |
"info": { | |
"title": "OpenAPI Document on Azure Functions", | |
"version": "1.0.0" | |
}, | |
"servers": [ | |
{ | |
"url": "http://localhost:7071/api" | |
} | |
], | |
"paths": { | |
"/greetings": { | |
"get": { | |
"tags": [ | |
"greeting" | |
], | |
"summary": "Greetings", | |
"description": "This shows a welcome message.", | |
"operationId": "greeting", | |
"parameters": [ | |
{ | |
"name": "name", | |
"in": "query", | |
"schema": { | |
"type": "string" | |
}, | |
"x-ms-visibility": "important" | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "This returns the response", | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/greeting" | |
} | |
} | |
}, | |
"x-ms-summary": "The response" | |
} | |
}, | |
"security": [ | |
{ | |
"function_key": [ ] | |
} | |
], | |
"x-ms-visibility": "important" | |
} | |
} | |
}, | |
"components": { | |
"schemas": { | |
"greeting": { | |
"type": "object", | |
"properties": { | |
"message": { | |
"type": "string" | |
} | |
} | |
} | |
}, | |
"securitySchemes": { | |
"function_key": { | |
"type": "apiKey", | |
"name": "code", | |
"in": "query" | |
} | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func start |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Bash | |
func start & | |
bg |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# PowerShell | |
Start-Process -NoNewWindow func start |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[TestClass] | |
public class DefaultHttpTriggerTests | |
{ | |
private HttpClient _http; | |
[TestInitialize] | |
public void Initialize() | |
{ | |
this._http = new HttpClient(); | |
} | |
[TestCleanup] | |
public void Cleanup() | |
{ | |
this._http.Dispose(); | |
} | |
[TestMethod] | |
public async Task Given_OpenApiUrl_When_Endpoint_Invoked_Then_It_Should_Return_Title() | |
{ | |
// Arrange | |
var requestUri = "http://localhost:7071/api/openapi/v3.json"; | |
// Act | |
var response = await this._http.GetStringAsync(requestUri).ConfigureAwait(false); | |
var doc = JsonConvert.DeserializeObject<OpenApiDocument>(response); | |
// Assert | |
doc.Should().NotBeNull(); | |
doc.Info.Title.Should().Be("OpenAPI Document on Azure Functions"); | |
doc.Components.Schemas.Should().ContainKey("greeting"); | |
var schema = doc.Components.Schemas["greeting"]; | |
schema.Type.Should().Be("object"); | |
schema.Properties.Should().ContainKey("message"); | |
var property = schema.Properties["message"]; | |
property.Type.Should().Be("string"); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
dotnet test |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
jobs: | |
build_and_test: | |
name: Build and test | |
strategy: | |
matrix: | |
os: [ 'windows-latest', 'macos-latest', 'ubuntu-latest' ] | |
runs-on: ${{ matrix.os }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
steps: | |
- name: Checkout the repository | |
uses: actions/checkout@v2 | |
- name: Setup Azure Functions Core Tools | |
shell: pwsh | |
run: | | |
npm install -g azure-functions-core-tools@3 --unsafe-perm true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- name: Setup .NET SDK 3.1 LTS | |
uses: actions/setup-dotnet@v1 | |
with: | |
dotnet-version: '3.1.x' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- name: Test function app (Non-Windows) | |
if: matrix.os != 'windows-latest' | |
shell: pwsh | |
run: | | |
dir | |
$rootDir = $pwd.Path | |
cd ./src/FunctionApp | |
Start-Process -NoNewWindow func @("start","--verbose","false") | |
Start-Sleep -s 60 | |
cd $rootDir/test/FunctionApp.Tests | |
dotnet test . -c Debug | |
cd $rootDir |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- name: Test function app (Windows) | |
if: matrix.os == 'windows-latest' | |
shell: pwsh | |
run: | | |
dir | |
$rootDir = $pwd.Path | |
$func = $(Get-Command func).Source.Replace(".ps1", ".cmd") | |
cd ./src/FunctionApp | |
Start-Process -NoNewWindow "$func" @("start","--verbose","false") | |
Start-Sleep -s 60 | |
cd $rootDir/test/FunctionApp.Tests | |
dotnet test . -c Debug | |
cd $rootDir |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment