Forge
csharp4405de34
1using System.Net.Http.Headers;
2using System.Net.Http.Json;
3using System.Text.Json;
4using IntercomService.Contracts;
5
6namespace IntercomService.Tests;
7
8[Collection("IntercomApi")]
9public sealed class TransportApiTests
10{
11 private readonly HttpClient _client;
12
13 public TransportApiTests(IntercomWebApplicationFactory factory) =>
14 _client = factory.CreateClient();
15
16 [Fact]
17 public async Task Health_returns_ok()
18 {
19 var response = await _client.GetAsync("/health");
20 response.EnsureSuccessStatusCode();
21 }
22
23 [Fact]
24 public async Task Dev_token_can_append_and_list_human_event()
25 {
26 var teamId = "dev-test-team-" + Guid.NewGuid().ToString("N")[..8];
27 const string devToken = "dev-intercom-local-change-me";
28
29 _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", devToken);
30
31 await _client.GetAsync($"/api/v1/teams/{teamId}");
32 var topics = await _client.GetFromJsonAsync<List<TopicDto>>($"/api/v1/teams/{teamId}/topics");
33 Assert.NotNull(topics);
34 Assert.NotEmpty(topics);
35
36 var topicId = topics![0].TopicId;
37 var clientEventId = Guid.NewGuid().ToString("N");
38 var payload = JsonSerializer.SerializeToElement(new
39 {
40 message_id = clientEventId,
41 role = "user",
42 content = "hello from test",
43 thread_id = Guid.NewGuid().ToString("N"),
44 }, IntercomJson.Web);
45
46 var appendBody = new AppendEventRequest(
47 SchemaVersion: 1,
48 ClientEventId: clientEventId,
49 OccurredAtUtc: DateTimeOffset.UtcNow.ToString("O"),
50 EventKind: "message_added",
51 Sender: new SenderDto("dev-member", "Dev Operator", "human", "cide"),
52 Payload: payload);
53
54 var post = await _client.PostAsJsonAsync($"/api/v1/topics/{topicId}/events", appendBody, IntercomJson.Web);
55 post.EnsureSuccessStatusCode();
56
57 var listed = await _client.GetFromJsonAsync<List<TransportEventEnvelopeDto>>(
58 $"/api/v1/topics/{topicId}/events");
59 Assert.NotNull(listed);
60 Assert.Contains(listed!, x => x.ClientEventId == clientEventId);
61 }
62}
63
64// Fix typo in test - AuthenticationHeaderValue not HeaderValue
65
View only · write via MCP/CIDE