agones.dev/agones@v1.53.0/sdks/csharp/test/AgonesAlphaSDKClientTests.cs (about) 1 // Copyright 2020 Google LLC All Rights Reserved. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 using Agones.Dev.Sdk.Alpha; 16 using Grpc.Core; 17 using System.Collections.Generic; 18 using System.Linq; 19 using System.Threading; 20 using System.Threading.Tasks; 21 using Microsoft.VisualStudio.TestTools.UnitTesting; 22 using Moq; 23 using System; 24 using Grpc.Net.Client; 25 using Microsoft.Extensions.Logging; 26 using gProto = Google.Protobuf.WellKnownTypes; 27 28 namespace Agones.Tests 29 { 30 [TestClass] 31 public class AgonesAlphaSDKClientTests 32 { 33 [TestMethod] 34 public async Task GetPlayerCapacity_Sends_OK() 35 { 36 var mockClient = new Mock<SDK.SDKClient>(); 37 var mockSdk = new AgonesSDK(); 38 var expected = new Count() { Count_ = 1 }; 39 mockClient.Setup(m => m.GetPlayerCapacityAsync(It.IsAny<Empty>(), It.IsAny<Metadata>(), It.IsAny<DateTime?>(), It.IsAny<CancellationToken>())).Returns( 40 (Empty _, Metadata _, DateTime? _, CancellationToken _) => new AsyncUnaryCall<Count>(Task.FromResult(expected), Task.FromResult(new Metadata()), () => Status.DefaultSuccess, () => new Metadata(), () => { })); 41 mockSdk.alpha.client = mockClient.Object; 42 43 var result = await mockSdk.Alpha().GetPlayerCapacityAsync(); 44 Assert.AreEqual(expected.Count_, result); 45 } 46 47 [TestMethod] 48 public async Task SetPlayerCapacity_Sends_OK() 49 { 50 var mockClient = new Mock<SDK.SDKClient>(); 51 var mockSdk = new AgonesSDK(); 52 var expected = StatusCode.OK; 53 mockClient.Setup(m => m.SetPlayerCapacityAsync(It.IsAny<Count>(), It.IsAny<Metadata>(), It.IsAny<DateTime?>(), It.IsAny<CancellationToken>())).Returns( 54 (Count _, Metadata _, DateTime? _, CancellationToken _) => new AsyncUnaryCall<Empty>(Task.FromResult(new Empty()), Task.FromResult(new Metadata()), () => new Status(expected, ""), () => new Metadata(), () => { })); 55 mockSdk.alpha.client = mockClient.Object; 56 57 var result = await mockSdk.Alpha().SetPlayerCapacityAsync(1); 58 Assert.AreEqual(expected, result.StatusCode); 59 } 60 61 [TestMethod] 62 public async Task PlayerConnect_Sends_OK() 63 { 64 var mockClient = new Mock<SDK.SDKClient>(); 65 var mockSdk = new AgonesSDK(); 66 var expected = new Bool() { Bool_ = true }; 67 68 mockClient.Setup(m => m.PlayerConnectAsync(It.IsAny<PlayerID>(), It.IsAny<Metadata>(), It.IsAny<DateTime?>(), It.IsAny<CancellationToken>())).Returns( 69 (PlayerID _, Metadata _, DateTime? _, CancellationToken _) => new AsyncUnaryCall<Bool>(Task.FromResult(new Bool 70 { 71 Bool_ = true 72 }), Task.FromResult(new Metadata()), () => Status.DefaultSuccess, () => new Metadata(), () => { })); 73 mockSdk.alpha.client = mockClient.Object; 74 75 var result = await mockSdk.Alpha().PlayerConnectAsync("test"); 76 Assert.AreEqual(expected.Bool_, result); 77 } 78 79 [TestMethod] 80 public async Task PlayerDisconnect_Sends_OK() 81 { 82 var mockClient = new Mock<SDK.SDKClient>(); 83 var mockSdk = new AgonesSDK(); 84 var expected = new Bool() { Bool_ = true }; 85 86 mockClient.Setup(m => m.PlayerDisconnectAsync(It.IsAny<PlayerID>(), It.IsAny<Metadata>(), It.IsAny<DateTime?>(), It.IsAny<CancellationToken>())).Returns( 87 (PlayerID _, Metadata _, DateTime? _, CancellationToken _) => new AsyncUnaryCall<Bool>(Task.FromResult(new Bool 88 { 89 Bool_ = true 90 }), Task.FromResult(new Metadata()), () => Status.DefaultSuccess, () => new Metadata(), () => { })); 91 mockSdk.alpha.client = mockClient.Object; 92 93 var result = await mockSdk.Alpha().PlayerDisconnectAsync("test"); 94 Assert.AreEqual(expected.Bool_, result); 95 } 96 97 [TestMethod] 98 public async Task GetPlayerCount_Sends_OK() 99 { 100 var mockClient = new Mock<SDK.SDKClient>(); 101 var mockSdk = new AgonesSDK(); 102 var expected = new Count() { Count_ = 1 }; 103 mockClient.Setup(m => m.GetPlayerCountAsync(It.IsAny<Empty>(), It.IsAny<Metadata>(), It.IsAny<DateTime?>(), It.IsAny<CancellationToken>())).Returns( 104 (Empty _, Metadata _, DateTime? _, CancellationToken _) => new AsyncUnaryCall<Count>(Task.FromResult(expected), Task.FromResult(new Metadata()), () => Status.DefaultSuccess, () => new Metadata(), () => { })); 105 mockSdk.alpha.client = mockClient.Object; 106 107 var result = await mockSdk.Alpha().GetPlayerCountAsync(); 108 Assert.AreEqual(expected.Count_, result); 109 } 110 111 [TestMethod] 112 public async Task IsPlayerConnected_Sends_OK() 113 { 114 var mockClient = new Mock<SDK.SDKClient>(); 115 var mockSdk = new AgonesSDK(); 116 var expected = new Bool() { Bool_ = true }; 117 mockClient.Setup(m => m.IsPlayerConnectedAsync(It.IsAny<PlayerID>(), It.IsAny<Metadata>(), It.IsAny<DateTime?>(), It.IsAny<CancellationToken>())).Returns( 118 (PlayerID _, Metadata _, DateTime? _, CancellationToken _) => new AsyncUnaryCall<Bool>(Task.FromResult(expected), Task.FromResult(new Metadata()), () => Status.DefaultSuccess, () => new Metadata(), () => { })); 119 mockSdk.alpha.client = mockClient.Object; 120 121 var result = await mockSdk.Alpha().IsPlayerConnectedAsync("test"); 122 Assert.AreEqual(expected.Bool_, result); 123 } 124 125 [TestMethod] 126 public async Task GetConnectedPlayers_Sends_OK() 127 { 128 var mockClient = new Mock<SDK.SDKClient>(); 129 var mockSdk = new AgonesSDK(); 130 var expected = new List<string> { "player1", "player2" }; 131 var playerList = new PlayerIDList() { List = { expected } }; 132 mockClient.Setup(m => m.GetConnectedPlayersAsync(It.IsAny<Empty>(), It.IsAny<Metadata>(), It.IsAny<DateTime?>(), It.IsAny<CancellationToken>())).Returns( 133 (Empty _, Metadata _, DateTime? _, CancellationToken _) => new AsyncUnaryCall<PlayerIDList>(Task.FromResult(playerList), Task.FromResult(new Metadata()), () => Status.DefaultSuccess, () => new Metadata(), () => { })); 134 mockSdk.alpha.client = mockClient.Object; 135 136 var result = await mockSdk.Alpha().GetConnectedPlayersAsync(); 137 CollectionAssert.AreEquivalent(expected, result); 138 } 139 140 [TestMethod] 141 public void InstantiateWithParameters_OK() 142 { 143 var mockSdk = new AgonesSDK(); 144 //var mockChannel = new Channel(mockSdk.Host, mockSdk.Port, ChannelCredentials.Insecure); 145 var mockChannel = GrpcChannel.ForAddress($"http://{mockSdk.Host}:{mockSdk.Port}"); 146 ILogger mockLogger = new Mock<ILogger>().Object; 147 CancellationTokenSource mockCancellationTokenSource = new Mock<CancellationTokenSource>().Object; 148 bool exceptionOccured = false; 149 try 150 { 151 new Alpha( 152 channel: mockChannel, 153 requestTimeoutSec: 15, 154 cancellationTokenSource: mockCancellationTokenSource, 155 logger: mockLogger 156 ); 157 } 158 catch 159 { 160 exceptionOccured = true; 161 } 162 163 Assert.IsFalse(exceptionOccured); 164 } 165 } 166 }