Skip to content

Commit fe6248b

Browse files
committed
feat(api): #45 updated service handing and tests
1 parent 85761ff commit fe6248b

4 files changed

Lines changed: 41 additions & 4 deletions

File tree

Kepware.Api.Test/ApiClient/AutomaticTagGenerationAsyncTests.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,15 @@ public async Task AutomaticTagGenerationAsync_ShouldReturnKepServerJobPromise_Wh
4848

4949
// Act
5050
var result = await _kepwareApiClient.ApiServices.AutomaticTagGenerationAsync(UNIT_TEST_CHANNEL, UNIT_TEST_DEVICE, TimeSpan.FromSeconds(30));
51+
var jobResult = await result.AwaitCompletionAsync();
5152

5253
// Assert
5354
result.ShouldNotBeNull();
5455
result.Endpoint.ShouldBe(ENDPOINT_TAG_GENERATION);
5556
result.JobTimeToLive.ShouldBe(TimeSpan.FromSeconds(30));
57+
jobResult.Value.ShouldBeFalse();
58+
jobResult.IsSuccess.ShouldBeFalse();
59+
jobResult.ResponseCode.ShouldBe(ApiResponseCode.BadRequest);
5660
}
5761

5862
[Fact]
@@ -113,6 +117,7 @@ public async Task AutomaticTagGenerationAsync_ShouldReturnSuccess_WhenJobComplet
113117
// Assert
114118
completionResult.Value.ShouldBeTrue();
115119
completionResult.IsSuccess.ShouldBeTrue();
120+
completionResult.ResponseCode.ShouldBe(ApiResponseCode.Success);
116121
}
117122

118123
[Fact]
@@ -135,6 +140,7 @@ public async Task AutomaticTagGenerationAsync_ShouldReturnSuccess_WhenJobComplet
135140
// Assert
136141
completionResult.Value.ShouldBeTrue();
137142
completionResult.IsSuccess.ShouldBeTrue();
143+
completionResult.ResponseCode.ShouldBe(ApiResponseCode.Success);
138144
}
139145

140146
[Fact]
@@ -155,6 +161,7 @@ public async Task AutomaticTagGenerationAsync_ShouldReturnFailure_WhenJobFailsAf
155161
// Assert
156162
completionResult.Value.ShouldBeFalse();
157163
completionResult.IsSuccess.ShouldBeFalse();
164+
completionResult.ResponseCode.ShouldBe(ApiResponseCode.Timeout);
158165
}
159166

160167
[Fact]
@@ -180,6 +187,8 @@ public async Task AutomaticTagGenerationAsync_ShouldReturnFailure_WhenJobFailsAf
180187
// Assert
181188
completionResult.Value.ShouldBeFalse();
182189
completionResult.IsSuccess.ShouldBeFalse();
190+
completionResult.ResponseCode.ShouldBe(ApiResponseCode.ServiceUnavailable);
191+
completionResult.Message.ShouldBe(jobStatusFailed.Message);
183192
}
184193
}
185194
}

Kepware.Api.Test/ApiClient/ReinitializeRuntimeAsyncTests.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,16 @@ public async Task ReinitializeRuntimeAsync_ShouldReturnKepServerJobPromise_WhenA
4646

4747
// Act
4848
var result = await _kepwareApiClient.ApiServices.ReinitializeRuntimeAsync(TimeSpan.FromSeconds(30));
49-
49+
var jobResult = await result.AwaitCompletionAsync();
50+
5051
// Assert
5152
result.ShouldNotBeNull();
5253
result.Endpoint.ShouldBe("/config/v1/project/services/ReinitializeRuntime");
5354
result.JobTimeToLive.ShouldBe(TimeSpan.FromSeconds(30));
55+
jobResult.Value.ShouldBeFalse();
56+
jobResult.IsSuccess.ShouldBeFalse();
57+
jobResult.ResponseCode.ShouldBe(ApiResponseCode.BadRequest);
58+
5459
}
5560

5661
[Fact]
@@ -111,6 +116,7 @@ public async Task ReinitializeRuntimeAsync_ShouldReturnSuccess_WhenJobCompletesS
111116
// Assert
112117
completionResult.Value.ShouldBeTrue();
113118
completionResult.IsSuccess.ShouldBeTrue();
119+
completionResult.ResponseCode.ShouldBe(ApiResponseCode.Success);
114120
}
115121

116122
[Fact]
@@ -133,6 +139,7 @@ public async Task ReinitializeRuntimeAsync_ShouldReturnSuccess_WhenJobCompletesS
133139
// Assert
134140
completionResult.Value.ShouldBeTrue();
135141
completionResult.IsSuccess.ShouldBeTrue();
142+
completionResult.ResponseCode.ShouldBe(ApiResponseCode.Success);
136143
}
137144

138145
[Fact]
@@ -153,6 +160,8 @@ public async Task ReinitializeRuntimeAsync_ShouldReturnFailure_WhenJobFailsAfter
153160
// Assert
154161
completionResult.Value.ShouldBeFalse();
155162
completionResult.IsSuccess.ShouldBeFalse();
163+
completionResult.ResponseCode.ShouldBe(ApiResponseCode.Timeout);
164+
156165
}
157166

158167
[Fact]
@@ -178,6 +187,8 @@ public async Task ReinitializeRuntimeAsync_ShouldReturnFailure_WhenJobFailsAfter
178187
// Assert
179188
completionResult.Value.ShouldBeFalse();
180189
completionResult.IsSuccess.ShouldBeFalse();
190+
completionResult.ResponseCode.ShouldBe(ApiResponseCode.ServiceUnavailable);
191+
completionResult.Message.ShouldBe(jobStatusFailed.Message);
181192
}
182193
}
183194
}

Kepware.Api.TestIntg/appsettings.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
"TestServer": {
55
"Host": "http://localhost",
66
"Port": 57412,
7-
"UserName": "Administrator",
8-
"Password": "ReallyStrongPassword400!"
7+
"UserName": "Test",
8+
"Password": "Kepware400400400"
99
}
1010
}
1111
}

Kepware.Api/ClientHandler/ServicesApiHandler.cs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,17 @@ public async Task<KepServerJobPromise> ReinitializeRuntimeAsync(TimeSpan timeToL
6363

6464
var response = await m_kepwareApiClient.HttpClient.PutAsync(ENDPOINT_REINITIALIZE_RUNTIME, httpContent, cancellationToken).ConfigureAwait(false);
6565

66-
6766
var message = await response.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false);
6867

68+
if (!response.IsSuccessStatusCode)
69+
{
70+
return new KepServerJobPromise(
71+
ENDPOINT_REINITIALIZE_RUNTIME,
72+
timeToLive,
73+
(ApiResponseCode)(int)response.StatusCode,
74+
$"ReinitializeRuntimeAsync request failed with status code {(ApiResponseCode)(int)response.StatusCode} and message: {message}");
75+
}
76+
6977
try
7078
{
7179
var jobResponse = JsonSerializer.Deserialize<JobResponseMessage>(message, KepJsonContext.Default.JobResponseMessage);
@@ -142,6 +150,15 @@ public async Task<KepServerJobPromise> AutomaticTagGenerationAsync(string channe
142150

143151
var message = await response.Content.ReadAsStringAsync(cancellationToken).ConfigureAwait(false);
144152

153+
if (!response.IsSuccessStatusCode)
154+
{
155+
return new KepServerJobPromise(
156+
endpoint,
157+
timeToLive,
158+
(ApiResponseCode)(int)response.StatusCode,
159+
$"AutomaticTagGeneration request failed with status code {(ApiResponseCode)(int)response.StatusCode} and message: {message}");
160+
}
161+
145162
try
146163
{
147164
var jobResponse = JsonSerializer.Deserialize<JobResponseMessage>(message, KepJsonContext.Default.JobResponseMessage);

0 commit comments

Comments
 (0)