Skip to content

Commit 4675f21

Browse files
author
Leo
committed
PR comment resolutions
1 parent b00db83 commit 4675f21

File tree

6 files changed

+282
-255
lines changed

6 files changed

+282
-255
lines changed

FirebaseAdmin/FirebaseAdmin.Tests/Messaging/InstanceIdClientTest.cs

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Threading.Tasks;
4+
using FirebaseAdmin.Messaging;
45
using Google.Apis.Auth.OAuth2;
56
using Google.Apis.Http;
67
using Xunit;
@@ -13,57 +14,47 @@ public class InstanceIdClientTest
1314
GoogleCredential.FromAccessToken("test-token");
1415

1516
[Fact]
16-
public void InstanceIdClientThrowsOnNoProjectId()
17-
{
18-
var clientFactory = new HttpClientFactory();
19-
Assert.Throws<ArgumentException>(
20-
() => new InstanceIdClient(clientFactory, MockCredential, null));
21-
Assert.Throws<ArgumentException>(
22-
() => new InstanceIdClient(clientFactory, MockCredential, string.Empty));
23-
}
24-
25-
[Fact]
26-
public void InstanceIdClientThrowsOnNoCredential()
17+
public void NoCredential()
2718
{
2819
var clientFactory = new HttpClientFactory();
2920
Assert.Throws<ArgumentNullException>(
30-
() => new InstanceIdClient(clientFactory, null, "test-project"));
21+
() => new InstanceIdClient(clientFactory, null));
3122
}
3223

3324
[Fact]
34-
public void InstanceIdClientThrowsOnNoClientFactory()
25+
public void NoClientFactory()
3526
{
3627
var clientFactory = new HttpClientFactory();
3728
Assert.Throws<ArgumentNullException>(
38-
() => new InstanceIdClient(null, MockCredential, "test-project"));
29+
() => new InstanceIdClient(null, MockCredential));
3930
}
4031

4132
[Fact]
42-
public async Task InstanceIdClientSubscribesToTopic()
33+
public async Task SubscribeToTopicAsync()
4334
{
4435
var handler = new MockMessageHandler()
4536
{
4637
Response = @"{""results"":[{}]}",
4738
};
4839
var factory = new MockHttpClientFactory(handler);
4940

50-
var client = new InstanceIdClient(factory, MockCredential, "test-project");
41+
var client = new InstanceIdClient(factory, MockCredential);
5142

5243
var result = await client.SubscribeToTopicAsync("test-topic", new List<string> { "abc123" });
5344

5445
Assert.Equal(1, result.SuccessCount);
5546
}
5647

5748
[Fact]
58-
public async Task InstanceIdClientUnsubscribesFromTopic()
49+
public async Task UnsubscribeFromTopicAsync()
5950
{
6051
var handler = new MockMessageHandler()
6152
{
6253
Response = @"{""results"":[{}]}",
6354
};
6455
var factory = new MockHttpClientFactory(handler);
6556

66-
var client = new InstanceIdClient(factory, MockCredential, "test-project");
57+
var client = new InstanceIdClient(factory, MockCredential);
6758

6859
var result = await client.UnsubscribeFromTopicAsync("test-topic", new List<string> { "abc123" });
6960

Lines changed: 38 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,95 @@
11
using System;
2-
using System.Collections.Generic;
3-
using Newtonsoft.Json.Linq;
2+
using FirebaseAdmin.Messaging;
3+
using Newtonsoft.Json;
44
using Xunit;
55

66
namespace FirebaseAdmin.Tests.Messaging
77
{
88
public class TopicManagementResponseTest
99
{
1010
[Fact]
11-
public void SuccessfulTopicManagementResponse()
11+
public void SuccessfulReponse()
1212
{
13-
var json = @"[{}, {}]";
14-
var jObjects = JArray.Parse(json).ToObject<List<JObject>>();
15-
var response = new TopicManagementResponse(jObjects);
13+
var json = @"{""results"": [{}, {}]}";
14+
var instanceIdServiceResponse = JsonConvert.DeserializeObject<InstanceIdServiceResponse>(json);
15+
var response = new TopicManagementResponse(instanceIdServiceResponse);
1616

1717
Assert.Equal(0, response.FailureCount);
1818
Assert.Equal(2, response.SuccessCount);
1919
}
2020

2121
[Fact]
22-
public void UnsuccessfulTopicManagementResponse()
22+
public void UnsuccessfulResponse()
2323
{
24-
var json = @"[{}, {""error"":""NOT_FOUND""}]";
25-
var jObjects = JArray.Parse(json).ToObject<List<JObject>>();
26-
var response = new TopicManagementResponse(jObjects);
24+
var json = @"{""results"": [{}, {""error"":""NOT_FOUND""}]}";
25+
var instanceIdServiceResponse = JsonConvert.DeserializeObject<InstanceIdServiceResponse>(json);
26+
var response = new TopicManagementResponse(instanceIdServiceResponse);
2727

2828
Assert.Equal(1, response.FailureCount);
2929
Assert.Equal(1, response.SuccessCount);
30+
Assert.NotEmpty(response.Errors);
31+
Assert.Equal("registration-token-not-registered", response.Errors[0].Reason);
32+
Assert.Equal(1, response.Errors[0].Index);
3033
}
3134

3235
[Fact]
33-
public void TopicManagementResponseCannotBeNull()
36+
public void NullResponse()
3437
{
3538
Assert.Throws<ArgumentException>(() =>
3639
{
37-
List<JObject> jObjects = null;
38-
var response = new TopicManagementResponse(jObjects);
40+
var response = new TopicManagementResponse(null);
3941
});
4042
}
4143

4244
[Fact]
43-
public void TopicManagementResponseCannotBeEmptyArray()
45+
public void EmptyResponse()
4446
{
4547
Assert.Throws<ArgumentException>(() =>
4648
{
47-
List<JObject> jObjects = new List<JObject>();
48-
var response = new TopicManagementResponse(jObjects);
49+
var instanceIdServiceResponse = new InstanceIdServiceResponse();
50+
var response = new TopicManagementResponse(instanceIdServiceResponse);
4951
});
5052
}
5153

5254
[Fact]
53-
public void TopicManagementResponseHandlesUnknownErrors()
55+
public void UnknownError()
5456
{
55-
var json = @"[{""error"":""NOT_A_REAL_ERROR_CODE""}]";
56-
var jObjects = JArray.Parse(json).ToObject<List<JObject>>();
57-
var response = new TopicManagementResponse(jObjects);
57+
var json = @"{""results"": [{""error"":""NOT_A_REAL_ERROR_CODE""}]}";
58+
var instanceIdServiceResponse = JsonConvert.DeserializeObject<InstanceIdServiceResponse>(json);
59+
var response = new TopicManagementResponse(instanceIdServiceResponse);
5860

5961
Assert.Equal(1, response.FailureCount);
6062
Assert.Equal(0, response.SuccessCount);
63+
Assert.NotEmpty(response.Errors);
64+
Assert.Equal("unknown-error", response.Errors[0].Reason);
65+
Assert.Equal(0, response.Errors[0].Index);
6166
}
6267

6368
[Fact]
64-
public void TopicManagementResponseHandlesUnexpectedResponse()
69+
public void UnexpectedResponse()
6570
{
66-
var json = @"[{""unexpected"":""NOT_A_REAL_CODE""}]";
67-
var jObjects = JArray.Parse(json).ToObject<List<JObject>>();
68-
var response = new TopicManagementResponse(jObjects);
71+
var json = @"{""results"": [{""unexpected"":""NOT_A_REAL_CODE""}]}";
72+
var instanceIdServiceResponse = JsonConvert.DeserializeObject<InstanceIdServiceResponse>(json);
73+
var response = new TopicManagementResponse(instanceIdServiceResponse);
6974

7075
Assert.Equal(0, response.FailureCount);
7176
Assert.Equal(1, response.SuccessCount);
7277
}
7378

7479
[Fact]
75-
public void TopicManagementResponseCountsSuccessAndErrors()
80+
public void CountsSuccessAndErrors()
7681
{
77-
var json = @"[{""error"": ""NOT_FOUND""}, {}, {""error"": ""NOT_FOUND""}, {}, {}]";
78-
var jObjects = JArray.Parse(json).ToObject<List<JObject>>();
79-
var response = new TopicManagementResponse(jObjects);
82+
var json = @"{""results"": [{""error"": ""NOT_FOUND""}, {}, {""error"": ""INVALID_ARGUMENT""}, {}, {}]}";
83+
var instanceIdServiceResponse = JsonConvert.DeserializeObject<InstanceIdServiceResponse>(json);
84+
var response = new TopicManagementResponse(instanceIdServiceResponse);
8085

8186
Assert.Equal(2, response.FailureCount);
8287
Assert.Equal(3, response.SuccessCount);
88+
Assert.Equal("registration-token-not-registered", response.Errors[0].Reason);
89+
Assert.NotEmpty(response.Errors);
90+
Assert.Equal(0, response.Errors[0].Index);
91+
Assert.Equal("invalid-argument", response.Errors[1].Reason);
92+
Assert.Equal(2, response.Errors[1].Index);
8393
}
8494
}
8595
}

FirebaseAdmin/FirebaseAdmin/Messaging/FirebaseMessaging.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ private FirebaseMessaging(FirebaseApp app)
3535
app.Options.HttpClientFactory, app.Options.Credential, app.GetProjectId());
3636

3737
this.instanceIdClient = new InstanceIdClient(
38-
app.Options.HttpClientFactory, app.Options.Credential, app.GetProjectId());
38+
app.Options.HttpClientFactory, app.Options.Credential);
3939
}
4040

4141
/// <summary>

0 commit comments

Comments
 (0)