agones.dev/agones@v1.54.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  }