Skip to content

Commit 410c302

Browse files
authored
Requesting detailed error responses from FCM backend (#107)
1 parent 5397e84 commit 410c302

File tree

2 files changed

+26
-10
lines changed

2 files changed

+26
-10
lines changed

FirebaseAdmin/FirebaseAdmin.Tests/Messaging/FirebaseMessagingClientTest.cs

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
using System.Linq;
1717
using System.Net;
1818
using System.Net.Http;
19+
using System.Net.Http.Headers;
1920
using System.Threading.Tasks;
2021
using FirebaseAdmin.Tests;
2122
using Google.Apis.Auth.OAuth2;
@@ -30,6 +31,12 @@ public class FirebaseMessagingClientTest
3031
private static readonly GoogleCredential MockCredential =
3132
GoogleCredential.FromAccessToken("test-token");
3233

34+
private static readonly string VersionHeader =
35+
$"X-Firebase-Client: {FirebaseMessagingClient.ClientVersion}";
36+
37+
private static readonly string ApiFormatHeader =
38+
"X-GOOG-API-FORMAT-VERSION: 2";
39+
3340
[Fact]
3441
public void NoProjectId()
3542
{
@@ -80,8 +87,7 @@ public async Task SendAsync()
8087
Assert.Equal("test-topic", req.Message.Topic);
8188
Assert.False(req.ValidateOnly);
8289
Assert.Equal(1, handler.Calls);
83-
var versionHeader = handler.LastRequestHeaders.GetValues("X-Firebase-Client").First();
84-
Assert.Equal(FirebaseMessagingClient.ClientVersion, versionHeader);
90+
this.CheckHeaders(handler.LastRequestHeaders);
8591
}
8692

8793
[Fact]
@@ -108,8 +114,7 @@ public async Task SendDryRunAsync()
108114
Assert.Equal("test-topic", req.Message.Topic);
109115
Assert.True(req.ValidateOnly);
110116
Assert.Equal(1, handler.Calls);
111-
var versionHeader = handler.LastRequestHeaders.GetValues("X-Firebase-Client").First();
112-
Assert.Equal(FirebaseMessagingClient.ClientVersion, versionHeader);
117+
this.CheckHeaders(handler.LastRequestHeaders);
113118
}
114119

115120
[Fact]
@@ -172,8 +177,9 @@ public async Task SendAllAsync()
172177
Assert.Equal("projects/fir-adminintegrationtests/messages/8580920590356323124", response.Responses[0].MessageId);
173178
Assert.Equal("projects/fir-adminintegrationtests/messages/5903525881088369386", response.Responses[1].MessageId);
174179
Assert.Equal(1, handler.Calls);
175-
var versionHeader = $"X-Firebase-Client: {FirebaseMessagingClient.ClientVersion}";
176-
Assert.Equal(2, this.CountLinesWithPrefix(handler.LastRequestBody, versionHeader));
180+
181+
Assert.Equal(2, this.CountLinesWithPrefix(handler.LastRequestBody, VersionHeader));
182+
Assert.Equal(2, this.CountLinesWithPrefix(handler.LastRequestBody, ApiFormatHeader));
177183
}
178184

179185
[Fact]
@@ -254,8 +260,8 @@ public async Task SendAllAsyncWithError()
254260
Assert.NotNull(exception.HttpResponse);
255261

256262
Assert.Equal(1, handler.Calls);
257-
var versionHeader = $"X-Firebase-Client: {FirebaseMessagingClient.ClientVersion}";
258-
Assert.Equal(2, this.CountLinesWithPrefix(handler.LastRequestBody, versionHeader));
263+
Assert.Equal(2, this.CountLinesWithPrefix(handler.LastRequestBody, VersionHeader));
264+
Assert.Equal(2, this.CountLinesWithPrefix(handler.LastRequestBody, ApiFormatHeader));
259265
}
260266

261267
[Fact]
@@ -327,8 +333,8 @@ public async Task SendAllAsyncWithErrorNoDetail()
327333
Assert.NotNull(exception.HttpResponse);
328334

329335
Assert.Equal(1, handler.Calls);
330-
var versionHeader = $"X-Firebase-Client: {FirebaseMessagingClient.ClientVersion}";
331-
Assert.Equal(2, this.CountLinesWithPrefix(handler.LastRequestBody, versionHeader));
336+
Assert.Equal(2, this.CountLinesWithPrefix(handler.LastRequestBody, VersionHeader));
337+
Assert.Equal(2, this.CountLinesWithPrefix(handler.LastRequestBody, ApiFormatHeader));
332338
}
333339

334340
[Fact]
@@ -497,6 +503,15 @@ public async Task TransportError()
497503
Assert.Equal(1, handler.Calls);
498504
}
499505

506+
private void CheckHeaders(HttpRequestHeaders header)
507+
{
508+
var versionHeader = header.GetValues("X-Firebase-Client").First();
509+
Assert.Equal(FirebaseMessagingClient.ClientVersion, versionHeader);
510+
511+
var apiFormatHeader = header.GetValues("X-GOOG-API-FORMAT-VERSION").First();
512+
Assert.Equal("2", apiFormatHeader);
513+
}
514+
500515
private int CountLinesWithPrefix(string body, string linePrefix)
501516
{
502517
return body.Split('\n').Count((line) => line.StartsWith(linePrefix));

FirebaseAdmin/FirebaseAdmin/Messaging/FirebaseMessagingClient.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ public void Dispose()
174174
private static void AddCommonHeaders(HttpRequestMessage request)
175175
{
176176
request.Headers.Add("X-Firebase-Client", ClientVersion);
177+
request.Headers.Add("X-GOOG-API-FORMAT-VERSION", "2");
177178
}
178179

179180
private async Task<BatchResponse> SendBatchRequestAsync(

0 commit comments

Comments
 (0)