mirror of
https://github.com/tgstation/tgstation-server.git
synced 2026-04-01 01:41:23 +01:00
105 lines
3.0 KiB
C#
105 lines
3.0 KiB
C#
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
using Moq;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Converters;
|
|
using Newtonsoft.Json.Serialization;
|
|
using System;
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using System.Net.Http.Headers;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
|
|
using Tgstation.Server.Api;
|
|
using Tgstation.Server.Api.Models;
|
|
using Tgstation.Server.Api.Models.Internal;
|
|
using Tgstation.Server.Api.Models.Response;
|
|
using Tgstation.Server.Common.Http;
|
|
using Tgstation.Server.Common.Tests;
|
|
|
|
namespace Tgstation.Server.Client.Tests
|
|
{
|
|
[TestClass]
|
|
public sealed class TestApiClient
|
|
{
|
|
[TestMethod]
|
|
public async Task TestDeserializingByondModelsWork()
|
|
{
|
|
var sample = new EngineResponse
|
|
{
|
|
EngineVersion = new EngineVersion
|
|
{
|
|
Engine = EngineType.Byond,
|
|
Version = new Version(511, 1385)
|
|
}
|
|
};
|
|
|
|
var sampleJson = JsonConvert.SerializeObject(sample, new JsonSerializerSettings
|
|
{
|
|
ContractResolver = new CamelCasePropertyNamesContractResolver(),
|
|
Converters = new[] { new VersionConverter() }
|
|
});
|
|
|
|
var response = new HttpResponseMessage(HttpStatusCode.OK)
|
|
{
|
|
Content = new StringContent(sampleJson)
|
|
};
|
|
|
|
var handler = new MockHttpMessageHandler((_, __) => Task.FromResult(response));
|
|
|
|
var client = new ApiClient(
|
|
new HttpClient(handler),
|
|
new Uri("http://fake.com"),
|
|
new ApiHeaders(
|
|
new ProductHeaderValue("fake"),
|
|
new TokenResponse
|
|
{
|
|
Bearer = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMyIsImV4cCI6IjE2OTkzOTUwNTIiLCJuYmYiOiIxNjk5MzA4NjUyIiwiaXNzIjoiVGdzdGF0aW9uLlNlcnZlci5Ib3N0IiwiYXVkIjoiVGdzdGF0aW9uLlNlcnZlci5BcGkifQ.GRqEd3LRYLkbzk7NHTqcBPX-Xc1vmE_zmbJEDowAXV4",
|
|
}),
|
|
null,
|
|
false);
|
|
|
|
var result = await client.Read<EngineResponse>(Routes.Engine, default);
|
|
Assert.AreEqual(sample.EngineVersion, result.EngineVersion);
|
|
Assert.AreEqual(-1, result.EngineVersion.Version.Build);
|
|
Assert.IsFalse(result.EngineVersion.CustomIteration.HasValue);
|
|
}
|
|
|
|
[TestMethod]
|
|
public async Task TestUnrecognizedResponse()
|
|
{
|
|
var sample = new EngineResponse
|
|
{
|
|
EngineVersion = new EngineVersion
|
|
{
|
|
Engine = EngineType.Byond,
|
|
Version = new Version(511, 1385)
|
|
}
|
|
};
|
|
|
|
var fakeJson = "asdfasd <>F#(*)U*#JLI";
|
|
|
|
var response = new HttpResponseMessage(HttpStatusCode.OK)
|
|
{
|
|
Content = new StringContent(fakeJson)
|
|
};
|
|
|
|
var handler = new MockHttpMessageHandler((_, __) => Task.FromResult(response));
|
|
|
|
var client = new ApiClient(
|
|
new HttpClient(handler),
|
|
new Uri("http://fake.com"),
|
|
new ApiHeaders(
|
|
new ProductHeaderValue("fake"),
|
|
new TokenResponse
|
|
{
|
|
Bearer = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMyIsImV4cCI6IjE2OTkzOTUwNTIiLCJuYmYiOiIxNjk5MzA4NjUyIiwiaXNzIjoiVGdzdGF0aW9uLlNlcnZlci5Ib3N0IiwiYXVkIjoiVGdzdGF0aW9uLlNlcnZlci5BcGkifQ.GRqEd3LRYLkbzk7NHTqcBPX-Xc1vmE_zmbJEDowAXV4"
|
|
}),
|
|
null,
|
|
false);
|
|
|
|
await Assert.ThrowsExactlyAsync<UnrecognizedResponseException>(() => client.Read<EngineResponse>(Routes.Engine, default).AsTask());
|
|
}
|
|
}
|
|
}
|