static async Task Main(string[] args) { using var httpClient = new System.Net.Http.HttpClient(); var api = new PetStoreClient(httpClient); var pet = await api.GetPetByIdAsync(21221); Console.WriteLine(pet.Category.Name); }
public void CannotGetOutputModelOnFailureCodeAsync() { var mockResponse = new MockResponse(404); var mockTransport = new MockTransport(mockResponse); PetStoreClient client = CreateClient(mockTransport); Assert.ThrowsAsync <RequestFailedException>(async() => await client.GetPetAsync("pet1")); }
public async Task ModelCastThrowsOnErrorCodeAsync() { var mockResponse = new MockResponse(404); // Send the response through the pipeline so IsError is set. var mockTransport = new MockTransport(mockResponse); PetStoreClient client = CreateClient(mockTransport); Response response = await client.GetPetAsync("pet1", ErrorOptions.NoThrow); Assert.Throws <RequestFailedException>(() => { Pet pet = response; }); }
public void ThrowOnErrorThrowsOnError() { var mockResponse = new MockResponse(404); var mockTransport = new MockTransport(mockResponse); PetStoreClient client = CreateClient(mockTransport); Assert.ThrowsAsync <RequestFailedException>(async() => { await client.GetPetAsync("snoopy", new RequestContext() { ErrorOptions = ErrorOptions.Default }); }); }
public async Task CanGetOutputModelOnSuccessCodeAsync() { var mockResponse = new MockResponse(200); Pet petResponse = new Pet("snoopy", "beagle"); mockResponse.SetContent(SerializationHelpers.Serialize(petResponse, SerializePet)); var mockTransport = new MockTransport(mockResponse); PetStoreClient client = CreateClient(mockTransport); Pet pet = await client.GetPetAsync("pet1"); Assert.AreEqual("snoopy", pet.Name); Assert.AreEqual("beagle", pet.Species); }
public async Task Change404Category() { var mockResponse = new MockResponse(404); // Send the response through the pipeline so IsError is set. var mockTransport = new MockTransport(mockResponse); PetStoreClient client = CreateClient(mockTransport); #region Snippet:SetRequestContext var context = new RequestContext(); context.AddClassifier(404, isError: false); Response response = await client.GetPetAsync("pet1", context); #endregion Assert.AreEqual(404, response.Status); }
public async Task CanGetResponseFromLlcGetMethodAsync() { var mockResponse = new MockResponse(200); Pet pet = new Pet("snoopy", "beagle"); mockResponse.SetContent(SerializationHelpers.Serialize(pet, SerializePet)); var mockTransport = new MockTransport(mockResponse); PetStoreClient client = CreateClient(mockTransport); Response response = await client.GetPetAsync("snoopy", new RequestOptions()); var doc = JsonDocument.Parse(response.Content.ToMemory()); Assert.AreEqual(200, response.Status); Assert.AreEqual("snoopy", doc.RootElement.GetProperty("name").GetString()); Assert.AreEqual("beagle", doc.RootElement.GetProperty("species").GetString()); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services .AddControllers() .AddJsonOptions(jsonOptions => { jsonOptions.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase; jsonOptions.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; jsonOptions.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); }) ; // configure our PetStore client // we use a named typed client. One benefit of this is that we can change settings in our tests services .Configure <PetStoreOptions>(Configuration.GetSection("PetStore")) .AddHttpClient(PetStoreOptions.HttpClientName) .AddTypedClient((httpClient, serviceProvider) => { var options = serviceProvider.GetRequiredService <IOptions <PetStoreOptions> >(); var c = new PetStoreClient(httpClient) { BaseUrl = options.Value.Url }; return(c); }); services.AddSwaggerGen(c => { c.EnableAnnotations(); c.SwaggerDoc("v1", new OpenApiInfo { Title = "Testing Demo API", Version = "v1" }); }); services.Configure <GenericOption>(Configuration.GetSection("Generic")); // need to use TryXXXX so that we can replace the implementation in tests services.TryAddSingleton <IOverridableService, OverridableService>(); }
public void CanSuppressExceptions() { var mockResponse = new MockResponse(404); var mockTransport = new MockTransport(mockResponse); PetStoreClient client = CreateClient(mockTransport); RequestContext context = new RequestContext() { ErrorOptions = ErrorOptions.NoThrow }; Response response = default; Assert.DoesNotThrowAsync(async() => { response = await client.GetPetAsync("snoopy", context); }); Assert.AreEqual(404, response.Status); }
public async Task GetRequestFailedException_StatusOptionDefault() { var mockResponse = new MockResponse(404); mockResponse.SetContent("{\"error\": { \"code\": \"MockStatusCode\" }}"); mockResponse.AddHeader(HttpHeader.Names.ContentType, "application/json"); var mockTransport = new MockTransport(mockResponse); PetStoreClient client = CreateClient(mockTransport); try { Pet pet = await client.GetPetAsync("pet1"); } catch (RequestFailedException e) { Assert.AreEqual(404, e.Status); Assert.That(() => e.Message.StartsWith("Service request failed.")); Assert.That(() => e.ErrorCode.StartsWith("MockStatusCode")); } }
public async Task ThrowOnErrorDoesntThrowOnSuccess() { var mockResponse = new MockResponse(200); Pet pet = new Pet("snoopy", "beagle"); mockResponse.SetContent(SerializationHelpers.Serialize(pet, SerializePet)); var mockTransport = new MockTransport(mockResponse); PetStoreClient client = CreateClient(mockTransport); Response response = await client.GetPetAsync("snoopy", new RequestContext() { ErrorOptions = ErrorOptions.Default }); var doc = JsonDocument.Parse(response.Content.ToMemory()); Assert.AreEqual(200, response.Status); Assert.AreEqual("snoopy", doc.RootElement.GetProperty("name").GetString()); Assert.AreEqual("beagle", doc.RootElement.GetProperty("species").GetString()); }
public async Task GetRequestFailedException_StatusOptionNoThrow() { var mockResponse = new MockResponse(404); mockResponse.SetContent("{\"error\": { \"code\": \"MockStatusCode\" }}"); mockResponse.AddHeader(HttpHeader.Names.ContentType, "application/json"); var mockTransport = new MockTransport(mockResponse); PetStoreClient client = CreateClient(mockTransport); try { // NOTE: is it weird that we're saying NoThrow here and it throws? // This looks confusing to me as someone reading this code. Pet pet = await client.GetPetAsync("pet1", ErrorOptions.NoThrow); } catch (RequestFailedException e) { Assert.AreEqual(404, e.Status); Assert.That(() => e.Message.StartsWith("Service request failed.")); Assert.That(() => e.ErrorCode.StartsWith("MockStatusCode")); } }
public MockHttpController(PetStoreClient petStoreClient) { _petStoreClient = petStoreClient; }