Skip to content

Commit

Permalink
Add Connection.GetRaw tests
Browse files Browse the repository at this point in the history
Add tests for `Connection.GetRaw()` and for #2789.
  • Loading branch information
martincostello committed Oct 28, 2023
1 parent 5bf3c82 commit 232e643
Showing 1 changed file with 110 additions and 0 deletions.
110 changes: 110 additions & 0 deletions Octokit.Tests/Http/ConnectionTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -416,6 +416,116 @@ public async Task SendsProperlyFormattedRequestWithProperAcceptHeader()
}
}

public class TheGetRawMethod
{
[Fact]
public async Task SendsProperlyFormattedRequestWithProperAcceptHeader()
{
var httpClient = Substitute.For<IHttpClient>();
var response = CreateResponse(HttpStatusCode.OK);
httpClient.Send(Args.Request, Args.CancellationToken).Returns(Task.FromResult(response));
var connection = new Connection(new ProductHeaderValue("OctokitTests"),
_exampleUri,
Substitute.For<ICredentialStore>(),
httpClient,
Substitute.For<IJsonSerializer>());

await connection.GetRaw(new Uri("endpoint", UriKind.Relative), new Dictionary<string, string>());

httpClient.Received(1).Send(Arg.Is<IRequest>(req =>
req.BaseAddress == _exampleUri &&
req.ContentType == null &&
req.Body == null &&
req.Method == HttpMethod.Get &&
req.Headers["Accept"] == "application/vnd.github.v3.raw" &&
req.Endpoint == new Uri("endpoint", UriKind.Relative)), Args.CancellationToken);
}

[Fact]
public async Task SendsProperlyFormattedRequestWithProperAcceptHeaderAndTimeout()
{
var httpClient = Substitute.For<IHttpClient>();
var response = CreateResponse(HttpStatusCode.OK);
httpClient.Send(Args.Request, Args.CancellationToken).Returns(Task.FromResult(response));
var connection = new Connection(new ProductHeaderValue("OctokitTests"),
_exampleUri,
Substitute.For<ICredentialStore>(),
httpClient,
Substitute.For<IJsonSerializer>());

await connection.GetRaw(new Uri("endpoint", UriKind.Relative), new Dictionary<string, string>(), TimeSpan.FromSeconds(1));

httpClient.Received(1).Send(Arg.Is<IRequest>(req =>
req.BaseAddress == _exampleUri &&
req.Timeout == TimeSpan.FromSeconds(1) &&
req.ContentType == null &&
req.Body == null &&
req.Method == HttpMethod.Get &&
req.Headers["Accept"] == "application/vnd.github.v3.raw" &&
req.Endpoint == new Uri("endpoint", UriKind.Relative)), Args.CancellationToken);
}

[Fact]
public async Task ReturnsCorrectContentForNull()
{
object body = null;
var httpClient = Substitute.For<IHttpClient>();
var response = CreateResponse(HttpStatusCode.OK, body);
httpClient.Send(Args.Request, Args.CancellationToken).Returns(Task.FromResult(response));
var connection = new Connection(new ProductHeaderValue("OctokitTests"),
_exampleUri,
Substitute.For<ICredentialStore>(),
httpClient,
Substitute.For<IJsonSerializer>());

var actual = await connection.GetRaw(new Uri("endpoint", UriKind.Relative), new Dictionary<string, string>());

Assert.NotNull(actual);
Assert.Null(actual.Body);
}

[Fact]
public async Task ReturnsCorrectContentForByteArray()
{
var body = new byte[] { 1, 2, 3 };

var httpClient = Substitute.For<IHttpClient>();
var response = CreateResponse(HttpStatusCode.OK, body);
httpClient.Send(Args.Request, Args.CancellationToken).Returns(Task.FromResult(response));
var connection = new Connection(new ProductHeaderValue("OctokitTests"),
_exampleUri,
Substitute.For<ICredentialStore>(),
httpClient,
Substitute.For<IJsonSerializer>());

var actual = await connection.GetRaw(new Uri("endpoint", UriKind.Relative), new Dictionary<string, string>());

Assert.NotNull(actual);
Assert.Equal(body, actual.Body);
}

[Fact]
public async Task ReturnsCorrectContentForStream()
{
var bytes = new byte[] { 1, 2, 3 };
var body = new MemoryStream(bytes);

var httpClient = Substitute.For<IHttpClient>();
var response = CreateResponse(HttpStatusCode.OK, body);
httpClient.Send(Args.Request, Args.CancellationToken).Returns(Task.FromResult(response));
var connection = new Connection(new ProductHeaderValue("OctokitTests"),
_exampleUri,
Substitute.For<ICredentialStore>(),
httpClient,
Substitute.For<IJsonSerializer>());

var actual = await connection.GetRaw(new Uri("endpoint", UriKind.Relative), new Dictionary<string, string>());

Assert.NotNull(actual);
Assert.Equal(bytes, actual.Body);
}
}

public class ThePatchMethod
{
[Fact]
Expand Down

0 comments on commit 232e643

Please sign in to comment.