public static RestImplementationBuilder AddBasicAuthorization(
     this RestImplementationBuilder builder,
     string userName,
     string password)
 {
     return(builder.WithHandler(new BasicAuthorizationHandler(userName, password)));
 }
        public async Task GetOrder_ShouldBeSuccess()
        {
            //Arrange
            var order = new Fixture()
                        .Create <Order>();

            var countInvokation = 0;
            var restFactory     = new RestImplementationBuilder()
                                  .WithBaseUrl("http://localhost:8080/")
                                  .WithHandler(new RequestHandlerStub(req =>
            {
                countInvokation++;
                var responseMessage = new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new StringContent(JsonConvert.SerializeObject(order), Encoding.UTF8, "application/json")
                };

                return(responseMessage);
            }))
                                  .Build();

            var imp = restFactory.Create <ITestInterface>();

            //Act
            var response = await imp.GetOrder(1);

            //Assert
            Assert.IsNotNull(response);
            Assert.AreEqual(1, countInvokation);
        }
        public async Task GreateOrder_WithBody_ShouldBeSuccess()
        {
            //Arrange
            var order = new Fixture()
                        .Create <Order>();

            var countInvokation = 0;
            var restFactory     = new RestImplementationBuilder()
                                  .WithBaseUrl("http://localhost:8080/")
                                  .WithHandler(new RequestHandlerStub(req =>
            {
                countInvokation++;
                return(new HttpResponseMessage(HttpStatusCode.Created));
            }))
                                  .Build();

            var imp = restFactory.Create <ITestInterface>();

            //Act
            await imp.GreateOrder(order);

            //Assert

            Assert.AreEqual(1, countInvokation);
        }
예제 #4
0
        static async Task Main(string[] args)
        {
            var restImple = new RestImplementationBuilder()
                            .WithBaseUrl("https://jsonplaceholder.typicode.com/")
                            .WithTimeout(TimeSpan.FromSeconds(60))
                            .AddLogging(async request =>
            {
                var requestString = request.Content == null
                    ? null
                    : await request.Content
                                    .ReadAsStringAsync()
                                    .ConfigureAwait(false);

                var stringBuilder = new StringBuilder(512);
                stringBuilder.AppendLine($"METHOD: {request.Method.Method}");
                stringBuilder.AppendLine($"URI: {request.RequestUri}");
                stringBuilder.AppendLine($"REQUEST HEADERS: ");
                foreach (var header in request.Headers)
                {
                    stringBuilder.AppendLine("\t" + header.Key + " : ");
                    stringBuilder.Append(string.Join(", ", header.Value));
                }
                stringBuilder.AppendLine($"REQUEST: {requestString}");
                Console.WriteLine(stringBuilder.ToString());
            }, async response =>
            {
                var responseString = response.Content == null
                            ? null
                            : await response.Content
                                     .ReadAsStringAsync()
                                     .ConfigureAwait(false);

                var stringBuilder = new StringBuilder(512);
                stringBuilder.AppendLine($"REQUEST HEADERS: ");
                foreach (var header in response.Headers)
                {
                    stringBuilder.Append("\t" + header.Key + " : ");
                    stringBuilder.Append(string.Join(", ", header.Value));
                }
                stringBuilder.AppendLine($"RESPONSE: {responseString}");
                Console.WriteLine(stringBuilder.ToString());
            })
                            .Build();

            try
            {
                var apiClient = restImple.Create <GoogleApi>();
                var result    = await apiClient.GetTodos(1);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
예제 #5
0
        public void Initialize()
        {
            _server = Initializer.InitializeServer();
            var clientBuilder = new RestImplementationBuilder()
                                .WithBaseUrl("http://localhost:54200/api/orders/")
                                .WithTimeout(TimeSpan.FromSeconds(30))
                                .WithHttpClient(_server.CreateClient())
                                .Build();

            _client = clientBuilder.Create <OrderClient>();

            _fixture = new Fixture();
        }
        public async Task GetOrder_WithAuth_ShouldBeSuccess()
        {
            //Arrange
            var order = new Fixture()
                        .Create <Order>();

            var countInvokation = 0;
            var userName        = "******";
            var password        = "******";

            var returnedUserName = string.Empty;
            var returnedPassword = string.Empty;

            var restFactory = new RestImplementationBuilder()
                              .WithBaseUrl("http://localhost:8080/")
                              .AddBasicAuthorization(userName, password)
                              .WithHandler(new RequestHandlerStub(req =>
            {
                countInvokation++;
                string encodedCredentials = req.Headers.Authorization.Parameter;

                var decodedCredentials = Encoding.UTF8.GetString(Convert.FromBase64String(encodedCredentials));

                var delimiterIndex = decodedCredentials.IndexOf(':');
                returnedUserName   = decodedCredentials.Substring(0, delimiterIndex);
                returnedPassword   = decodedCredentials.Substring(delimiterIndex + 1);


                var responseMessage = new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new StringContent(JsonConvert.SerializeObject(order), Encoding.UTF8, "application/json")
                };

                return(responseMessage);
            }))
                              .Build();

            var imp = restFactory.Create <ITestInterface>();

            //Act
            var response = await imp.GetOrder(1);

            //Assert
            Assert.AreEqual(userName, returnedUserName);
            Assert.AreEqual(password, returnedPassword);
        }