-
Notifications
You must be signed in to change notification settings - Fork 1
/
GettingStartedTests.cs
109 lines (100 loc) · 4.56 KB
/
GettingStartedTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
using Agero.Core.ApiHealth.Helpers;
using Agero.Core.ApiHealth.Models;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Newtonsoft.Json;
using System;
using System.Net;
using System.Threading.Tasks;
namespace Agero.Core.ApiHealth.Tests
{
[TestClass]
public class GettingStartedTests
{
[TestMethod]
public async Task AsynchronousUsage()
{
// Create instance of health service
IHealthService service =
new HealthService
(
name: "Test Application",
version: "1.0.0.0",
includeErrorDetails: true,
runBookUrl: new Uri("http://example.com/runbook")
);
// Create an array of verification requests
var verificationRequests =
new[]
{
// Runs action and compose verification result based on response
new AsyncVerificationRequest
(
type: "check_something",
description: "Checks something.",
action: () =>
{
// If any exception happens, than "isSuccessful" is false and exception details will be in "errorDetails".
// Return type is System.String
// If return value is null, than "isSuccessful" is true.
// Otherwise "isSuccessful" is false and returned string will be in "errorDetails".
return Task.FromResult<string>(null);
}
),
// Calls health endpoint of provided API and composes verification result based on response
VerificationRequestCreator.CreateAsyncHealthRequest
(
type: "check_some_api_with_health_endpoint",
description: "Checks some API with health endpoint.",
applicationUri: new Uri("https://example.com/someapi"),
mode: HealthCheckMode.Full
),
// Calls URL with GET method and composes verification result based on HTTP status code
VerificationRequestCreator.CreateAsyncHttpRequest
(
type: "check_some_api_returns_200",
description: "Checks some API returns 200 OK HTTP status code.",
uri: new Uri("https://example.com/someapi/info"),
expectedHttpStatusCode: HttpStatusCode.OK
)
};
// Execute all verification requests and compose health object
Health health = await service.GetHealthAsync(verificationRequests);
// Health object can be serialized to JSON which complies with Health API spec
var json = JsonConvert.SerializeObject(health);
}
[TestMethod]
public void SynchronousUsage()
{
IHealthService service =
new HealthService(
name: "Test Application",
version: "1.0.0.0",
includeErrorDetails: true,
runBookUrl: new Uri("http://example.com/runbook")
);
var verificationRequests =
new[]
{
new SyncVerificationRequest(
type: "check_something",
description: "Checks something.",
action: () => null
),
VerificationRequestCreator.CreateSyncHealthRequest(
type: "check_some_api_with_health_endpoint",
description: "Checks some API with health endpoint.",
applicationUri: new Uri("https://example.com/someapi"),
mode: HealthCheckMode.Full
),
VerificationRequestCreator.CreateSyncHttpRequest(
type: "check_some_api_returns_200",
description: "Checks some API returns 200 OK HTTP status code.",
uri: new Uri("https://example.com/someapi/info"),
expectedHttpStatusCode: HttpStatusCode.OK
)
};
Health health = service.GetHealth(verificationRequests);
var json = JsonConvert.SerializeObject(health);
}
}
}