public async Task ReturnsObjectIfNotNew() { var apiInfo = new ApiInfo( new Dictionary<string, Uri> { { "next", new Uri("https://api.github.com/repos/rails/rails/issues?page=4&per_page=5") }, { "last", new Uri("https://api.github.com/repos/rails/rails/issues?page=131&per_page=5") }, { "first", new Uri("https://api.github.com/repos/rails/rails/issues?page=1&per_page=5") }, { "prev", new Uri("https://api.github.com/repos/rails/rails/issues?page=2&per_page=5") } }, new List<string> { "user", }, new List<string> { "user", "public_repo", "repo", "gist" }, "5634b0b187fd2e91e3126a75006cc4fa", new RateLimit(100, 75, 1372700873) ); var httpClient = Substitute.For<IHttpClient>(); // We really only care about the ApiInfo property... var expectedResponse = new Response(HttpStatusCode.OK, null, new Dictionary<string, string>(), "application/json") { ApiInfo = apiInfo }; httpClient.Send(Arg.Any<IRequest>(), Arg.Any<CancellationToken>()) .Returns(Task.FromResult<IResponse>(expectedResponse)); var connection = new Connection(new ProductHeaderValue("OctokitTests"), _exampleUri, Substitute.For<ICredentialStore>(), httpClient, Substitute.For<IJsonSerializer>()); connection.Get<PullRequest>(new Uri("https://example.com"), TimeSpan.MaxValue); var result = connection.GetLastApiInfo(); // No point checking all of the values as they are tested elsewhere // Just provde that the ApiInfo is populated Assert.Equal(4, result.Links.Count); Assert.Equal(1, result.OauthScopes.Count); Assert.Equal(4, result.AcceptedOauthScopes.Count); Assert.Equal("5634b0b187fd2e91e3126a75006cc4fa", result.Etag); Assert.Equal(100, result.RateLimit.Limit); }