Files
octokit.net/Octokit.Tests/Exceptions/ApiValidationExceptionTests.cs

55 lines
1.9 KiB
C#

using System.Linq;
using System.Net;
using Xunit;
using static Octokit.Internal.TestSetup;
using Octokit.Tests.Helpers;
namespace Octokit.Tests.Exceptions
{
public class ApiValidationExceptionTests
{
public class TheConstructor
{
[Fact]
public void CreatesGitHubErrorFromJsonResponse()
{
var response = CreateResponse(
(HttpStatusCode)422,
@"{""errors"":[{""code"":""custom"",""field"":""key"",""message"":""key is " +
@"already in use"",""resource"":""PublicKey""}],""message"":""Validation Failed""}");
var exception = new ApiValidationException(response);
Assert.Equal("Validation Failed", exception.ApiError.Message);
Assert.Equal("key is already in use", exception.ApiError.Errors.First().Message);
}
[Fact]
public void ProvidesDefaultMessage()
{
var response = CreateResponse((HttpStatusCode)422);
var exception = new ApiValidationException(response);
Assert.Equal("Validation Failed", exception.Message);
}
[Fact]
public void CanPopulateObjectFromSerializedData()
{
var response = CreateResponse(
(HttpStatusCode)422,
@"{""errors"":[{""code"":""custom"",""field"":""key"",""message"":""key is " +
@"already in use"",""resource"":""PublicKey""}],""message"":""Validation Failed""}");
var exception = new ApiValidationException(response);
var deserialized = BinaryFormatterExtensions.SerializeAndDeserializeObject(exception);
Assert.Equal("Validation Failed", deserialized.ApiError.Message);
Assert.Equal("key is already in use", exception.ApiError.Errors.First().Message);
}
}
}
}