| 1 | using System.Net.Http.Headers; |
| 2 | using System.Net.Http.Json; |
| 3 | using IntercomService.Contracts; |
| 4 | |
| 5 | namespace IntercomService.Tests; |
| 6 | |
| 7 | [Collection("IntercomApi")] |
| 8 | public sealed class IdentityApiTests |
| 9 | { |
| 10 | private readonly HttpClient _client; |
| 11 | |
| 12 | public IdentityApiTests(IntercomWebApplicationFactory factory) => |
| 13 | _client = factory.CreateClient(); |
| 14 | |
| 15 | [Fact] |
| 16 | public async Task Auth_providers_returns_list() |
| 17 | { |
| 18 | var providers = await _client.GetFromJsonAsync<List<AuthProviderDto>>("/api/v1/auth/providers"); |
| 19 | Assert.NotNull(providers); |
| 20 | } |
| 21 | |
| 22 | [Fact] |
| 23 | public async Task Dev_token_me_lists_teams_with_roles() |
| 24 | { |
| 25 | const string devToken = "dev-intercom-local-change-me"; |
| 26 | _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", devToken); |
| 27 | |
| 28 | var teamId = "identity-me-" + Guid.NewGuid().ToString("N")[..8]; |
| 29 | var teamResponse = await _client.GetAsync($"/api/v1/teams/{teamId}"); |
| 30 | teamResponse.EnsureSuccessStatusCode(); |
| 31 | |
| 32 | var me = await _client.GetFromJsonAsync<MeResponse>("/api/v1/auth/me"); |
| 33 | Assert.NotNull(me); |
| 34 | Assert.Contains(me!.Teams, x => x.TeamId == teamId && x.TeamRole == "admin"); |
| 35 | } |
| 36 | |
| 37 | [Fact] |
| 38 | public async Task Workspace_resolve_empty_without_projects() |
| 39 | { |
| 40 | const string devToken = "dev-intercom-local-change-me"; |
| 41 | _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", devToken); |
| 42 | |
| 43 | await _client.GetAsync("/api/v1/teams/workspace-test-team"); |
| 44 | |
| 45 | var response = await _client.GetFromJsonAsync<WorkspaceContextResponse>( |
| 46 | "/api/v1/resolve/workspace-context?repo_url=" + Uri.EscapeDataString("github.com/example/repo")); |
| 47 | Assert.NotNull(response); |
| 48 | Assert.Equal(["github.com/example/repo"], response!.NormalizedRepoUrls); |
| 49 | Assert.Empty(response.Teams); |
| 50 | } |
| 51 | } |
| 52 | |