Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 8
0
        // 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"));
            }
        }
Ejemplo n.º 11
0
        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;
 }