public PagedSearchedQueryResult <FakturaZakupu> FakturyZakupu(int idFirmy, int idRoku, int?idKontrahenta, int page, string search, string asc, string desc, int pageSize = KancelariaSettings.PageSize, DateTime?dateFrom = null, DateTime?dateTo = null)
        {
            var Query = QueryStringParser <FakturaZakupu> .Parse(
                (from fz in db.FakturaZakupus
                 where fz.IdFirmy == idFirmy &&
                 fz.IdRoku == idRoku &&
                 (idKontrahenta.HasValue ? fz.IdKontrahenta == idKontrahenta : true)
                 select fz).SortBy(asc, desc, "DataFaktury", true), new FakturyZakupuDictionary(), ref search
                );

            if (dateFrom.HasValue)
            {
                Query = Query.Where(p => p.DataFaktury >= dateFrom.Value);
            }

            if (dateTo.HasValue)
            {
                Query = Query.Where(p => p.DataFaktury <= dateTo.Value);
            }

            if (search != null)
            {
                Query = Query.Where(
                    q => q.NumerFaktury.Contains(search.ToLower()) ||
                    q.Opis.Contains(search.ToLower()) ||
                    q.WlasnyNumerFaktury.Contains(search.ToLower())
                    //|| q.PozycjaFakturyZakupus.Sum(s => s.KwotaNetto).ToString().Contains(search) // TODO: dorobic na FZ - FS metody zwracajace sumy netto, brutto, vat
                    );
            }

            return(new PagedSearchedQueryResult <FakturaZakupu>(Query, page, pageSize, search));
        }
Exemplo n.º 2
0
        protected override async Task <bool> GetHtmlAsync(IOwinEnvironment context, IClient client, CancellationToken cancellationToken)
        {
            var queryString = QueryStringParser.Parse(context.Request.QueryString, _logger);
            var spToken     = queryString.GetString("sptoken");

            if (string.IsNullOrEmpty(spToken))
            {
                return(await HttpResponse.Redirect(context, _configuration.Web.ForgotPassword.Uri));
            }

            var application = await client.GetApplicationAsync(_configuration.Application.Href, cancellationToken);

            try
            {
                await application.VerifyPasswordResetTokenAsync(spToken, cancellationToken);

                var viewModelBuilder        = new ChangePasswordFormViewModelBuilder(client, _configuration);
                var changePasswordViewModel = viewModelBuilder.Build();

                await RenderViewAsync(context, _configuration.Web.ChangePassword.View, changePasswordViewModel, cancellationToken);

                return(true);
            }
            catch (ResourceException)
            {
                return(await HttpResponse.Redirect(context, _configuration.Web.ChangePassword.ErrorUri));
            }
        }
        public PagedSearchedQueryResult <NieuregulowanaFakturaSprzedazy> NieuregulowaneFakturySprzedazy(int idFirmy, int idRoku, int?idKontrahenta, int?idInwestycji,
                                                                                                        int page, string search, string asc, string desc, int pageSize = KancelariaSettings.PageSize, bool czyRazemZKorektami = false, DateTime?stanNaDzien = null)
        {
            var Query = QueryStringParser <NieuregulowanaFakturaSprzedazy> .Parse(
                (from fz in db.NieuregulowanaFakturaSprzedazies
                 where fz.IdFirmy == idFirmy &&
                 fz.IdRoku == idRoku &&
                 (idKontrahenta.HasValue ? fz.IdKontrahenta == idKontrahenta : true) &&
                 (idInwestycji.HasValue ? fz.IdInwestycji == idInwestycji : true) &&
                 fz.KwotaNieuregulowana != 0 &&
                 (czyRazemZKorektami ? true : !fz.IdFakturyKorygujacej.HasValue)
                 select fz).SortBy(asc, desc, "DataFaktury"), new NieuregulowanaFakturySprzedazyDictionary(), ref search
                );

            if (search != null)
            {
                Query = Query.Where(
                    q => q.NumerFaktury.Contains(search.ToLower()) ||
                    q.Opis.Contains(search.ToLower()) ||
                    q.NumerFaktury.Contains(search.ToLower())
                    );
            }

            if (stanNaDzien.HasValue)
            {
                Query = Query.Where(p => p.TerminPlatnosci <= stanNaDzien.Value);
            }

            if (idKontrahenta.HasValue)
            {
                Query = Query.Where(q => q.IdKontrahenta == idKontrahenta);
            }

            return(new PagedSearchedQueryResult <NieuregulowanaFakturaSprzedazy>(Query, page, pageSize, search));
        }
        public void Parse()
        {
            QueryStringContainer queryStringContainer = new QueryStringContainer();
            QueryStringParser    queryStringParser    = new QueryStringParser();

            NameValueCollection queryStringFields = new NameValueCollection();

            queryStringFields.Add("s", "Hey");
            queryStringFields.Add("intField", "122");
            queryStringFields.Add("iaf", "1,23,456");
            queryStringFields.Add("df", "20070408");
            queryStringFields.Add("dtf", "20070408123456");
            queryStringFields.Add("sts", "Hi,There");
            queryStringFields.Add("integers", "1,2,3,4,5");
            queryStringFields.Add("b", "1");

            queryStringParser.Parse(queryStringFields, queryStringContainer);

            Assert.AreEqual("Hey", queryStringContainer.StringField);
            Assert.AreEqual(122, queryStringContainer.IntField);
            Assert.AreEqual(new int[] { 1, 23, 456 }, queryStringContainer.IntArrayField);
            Assert.AreEqual(new DateTime(2007, 4, 8), queryStringContainer.DateField);
            Assert.AreEqual(new DateTime(2007, 4, 8, 12, 34, 56), queryStringContainer.DateTimeField);

            Assert.AreEqual("Hi", queryStringContainer.Strings[0]);
            Assert.AreEqual("There", queryStringContainer.Strings[1]);

            Assert.AreEqual(1, queryStringContainer.Ints[0]);
            Assert.AreEqual(2, queryStringContainer.Ints[1]);
            Assert.AreEqual(3, queryStringContainer.Ints[2]);
            Assert.AreEqual(4, queryStringContainer.Ints[3]);
            Assert.AreEqual(5, queryStringContainer.Ints[4]);

            Assert.IsTrue(queryStringContainer.BoolField);
        }
Exemplo n.º 5
0
        public void OrderReturnFieldDictionaryWhenIsSetInQuery()
        {
            var order = new Http.Rest.Query(QueryStringParser.Parse("sort[a]=asc")).Order;

            Assert.Equal("a", order[0].Field);
            Assert.Equal(Order.Asc, order[0].Order);
        }
        private async Task <bool> HandleIdSiteRedirectAsync(
            IOwinEnvironment context,
            IClient client,
            CancellationToken cancellationToken)
        {
            var application = await client.GetApplicationAsync(_configuration.Application.Href, cancellationToken);

            var options = _options as IdSiteRedirectOptions ?? new IdSiteRedirectOptions();

            var queryString = QueryStringParser.Parse(context.Request.QueryString, _logger);
            var stateToken  = queryString.GetString(StringConstants.StateTokenName);

            if (string.IsNullOrEmpty(stateToken) || !new StateTokenParser(client, _configuration.Client.ApiKey, stateToken, _logger).Valid)
            {
                stateToken = new StateTokenBuilder(client, _configuration.Client.ApiKey).ToString();
            }

            var idSiteUrlBuilder = application.NewIdSiteUrlBuilder()
                                   .SetCallbackUri(options.CallbackUri)
                                   .SetPath(options.Path)
                                   .SetState(stateToken);

            if (options.Logout)
            {
                idSiteUrlBuilder.ForLogout();
            }

            var idSiteUrl = idSiteUrlBuilder.Build();

            return(await HttpResponse.Redirect(context, idSiteUrl));
        }
Exemplo n.º 7
0
        public void ParseQueryStringShouldReturnEmptyValue()
        {
            var url   = new Url("GET", "https://localhost:80/?field=");
            var query = QueryStringParser.Parse(url.Query);

            Assert.Equal("", query.GetValue("field"));
        }
Exemplo n.º 8
0
        public void OrderShouldReturnFieldsInOrder()
        {
            var order = new Http.Rest.Query(QueryStringParser.Parse("sort[x]=&sort[a]=")).Order;

            Assert.Equal("x", order[0].Field);
            Assert.Equal("a", order[1].Field);
        }
        public PagedSearchedQueryResult <Kontrahent> Kontrahenci(int idFirmy, int page, string search, string asc, string desc, int pageSize = KancelariaSettings.PageSize)
        {
            //var result = (from k in db.Kontrahents
            //        select k).AsQueryable();

            //return new PagedSearchedQueryResult<Kontrahent>(result, page, KancelariaSettings.PageSize);

            if (search == null)
            {
                search = "";
            }

            var Query = QueryStringParser <Kontrahent> .Parse(
                (from k in db.Kontrahents where k.IdFirmy == idFirmy select k).SortBy(asc, desc, "KodKontrahenta"), new KontrahenciDictionary(), ref search
                ).Where(
                q => q.KodKontrahenta.ToLower().Contains(search.ToLower()) ||
                q.Miejscowosc.ToLower().Contains(search.ToLower()) ||
                q.NazwaKontrahenta.ToLower().Contains(search.ToLower()) ||
                q.NIP.ToLower().Contains(search.ToLower()) ||
                q.Panstwo.ToLower().Contains(search.ToLower()) ||
                q.Ulica.ToLower().Contains(search.ToLower())
                );

            return(new PagedSearchedQueryResult <Kontrahent>(Query, page, pageSize, search));
        }
Exemplo n.º 10
0
        protected override async Task <bool> PostHtmlAsync(IOwinEnvironment context, IClient client, ContentType bodyContentType, CancellationToken cancellationToken)
        {
            var application = await client.GetApplicationAsync(_configuration.Application.Href, cancellationToken);

            try
            {
                var body = await context.Request.GetBodyAsStringAsync(cancellationToken);

                var model    = PostBodyParser.ToModel <ForgotPasswordPostModel>(body, bodyContentType, _logger);
                var formData = FormContentParser.Parse(body, _logger);

                var stateToken       = formData.GetString(StringConstants.StateTokenName);
                var parsedStateToken = new StateTokenParser(client, _configuration.Client.ApiKey, stateToken, _logger);
                if (!parsedStateToken.Valid)
                {
                    var queryString      = QueryStringParser.Parse(context.Request.QueryString, _logger);
                    var viewModelBuilder = new ForgotPasswordFormViewModelBuilder(client, _configuration, queryString);
                    var viewModel        = viewModelBuilder.Build();
                    viewModel.Errors.Add("An error occurred. Please try again.");

                    await RenderViewAsync(context, _configuration.Web.ForgotPassword.View, viewModel, cancellationToken);

                    return(true);
                }

                await application.SendPasswordResetEmailAsync(model.Email, cancellationToken);
            }
            catch (Exception ex)
            {
                _logger.Error(ex, source: "ForgotRoute.PostHtml");
            }

            return(await HttpResponse.Redirect(context, _configuration.Web.ForgotPassword.NextUri));
        }
Exemplo n.º 11
0
        protected override async Task <bool> GetHtmlAsync(IOwinEnvironment context, IClient client, CancellationToken cancellationToken)
        {
            var queryString = QueryStringParser.Parse(context.Request.QueryString, _logger);
            var spToken     = queryString.GetString("sptoken");

            if (string.IsNullOrEmpty(spToken))
            {
                var viewModelBuilder = new VerifyEmailFormViewModelBuilder(client, _configuration);
                var verifyViewModel  = viewModelBuilder.Build();

                await RenderViewAsync(context, _configuration.Web.VerifyEmail.View, verifyViewModel, cancellationToken);

                return(true);
            }

            try
            {
                var account = await client.VerifyAccountEmailAsync(spToken, cancellationToken);

                var postVerifyEmailContext = new PostVerifyEmailContext(context, account);
                await _handlers.PostVerifyEmailHandler(postVerifyEmailContext, cancellationToken);

                return(await HttpResponse.Redirect(context, $"{_configuration.Web.VerifyEmail.NextUri}"));
            }
            catch (ResourceException)
            {
                var viewModelBuilder = new VerifyEmailFormViewModelBuilder(client, _configuration);
                var verifyViewModel  = viewModelBuilder.Build();
                verifyViewModel.InvalidSpToken = true;

                await RenderViewAsync(context, _configuration.Web.VerifyEmail.View, verifyViewModel, cancellationToken);

                return(true);
            }
        }
Exemplo n.º 12
0
        public void ParseQueryStringShouldRewriteValueWithLastOccurence()
        {
            var url   = new Url("GET", "https://localhost:80/?field=asd&field=acd&field=axd");
            var query = QueryStringParser.Parse(url.Query);

            Assert.Equal("axd", query.GetValue("field"));
        }
Exemplo n.º 13
0
        public void ParseEmptyQueryStringShouldReturnEmptyDictionary()
        {
            var url   = new Url("GET", "https://localhost:80/");
            var query = QueryStringParser.Parse(url.Query);

            Assert.Empty(query.ToList());
        }
Exemplo n.º 14
0
        /// <summary>
        /// Initializes a new instance of the <see cref="RequestMessage"/> class.
        /// </summary>
        /// <param name="urlDetails">The original url details.</param>
        /// <param name="method">The HTTP method.</param>
        /// <param name="clientIP">The client IP Address.</param>
        /// <param name="bodyData">The BodyData.</param>
        /// <param name="headers">The headers.</param>
        /// <param name="cookies">The cookies.</param>
        public RequestMessage([NotNull] UrlDetails urlDetails, [NotNull] string method, [NotNull] string clientIP, [CanBeNull] BodyData bodyData = null, [CanBeNull] IDictionary <string, string[]> headers = null, [CanBeNull] IDictionary <string, string> cookies = null)
        {
            Check.NotNull(urlDetails, nameof(urlDetails));
            Check.NotNull(method, nameof(method));
            Check.NotNull(clientIP, nameof(clientIP));

            AbsoluteUrl = urlDetails.AbsoluteUrl.ToString();
            Url         = urlDetails.Url.ToString();
            Protocol    = urlDetails.Url.Scheme;
            Host        = urlDetails.Url.Host;
            Port        = urlDetails.Url.Port;
            Origin      = $"{Protocol}://{Host}:{Port}";

            AbsolutePath         = WebUtility.UrlDecode(urlDetails.AbsoluteUrl.AbsolutePath);
            Path                 = WebUtility.UrlDecode(urlDetails.Url.AbsolutePath);
            PathSegments         = Path.Split('/').Skip(1).ToArray();
            AbsolutePathSegments = AbsolutePath.Split('/').Skip(1).ToArray();

            Method   = method;
            ClientIP = clientIP;

            BodyData = bodyData;

            // Convenience getters for e.g. Handlebars
            Body             = BodyData?.BodyAsString;
            BodyAsJson       = BodyData?.BodyAsJson;
            BodyAsBytes      = BodyData?.BodyAsBytes;
            DetectedBodyType = BodyData?.DetectedBodyType.ToString();
            DetectedBodyTypeFromContentType = BodyData?.DetectedBodyTypeFromContentType.ToString();

            Headers  = headers?.ToDictionary(header => header.Key, header => new WireMockList <string>(header.Value));
            Cookies  = cookies;
            RawQuery = WebUtility.UrlDecode(urlDetails.Url.Query);
            Query    = QueryStringParser.Parse(RawQuery);
        }
        public PagedSearchedQueryResult <NieuregulowanaFakturaZakupu> NieuregulowaneFakturyZakupu(int idFirmy, int idRoku, int?idKontrahenta, int page, string search, string asc, string desc,
                                                                                                  int pageSize = KancelariaSettings.PageSize, DateTime?stanNaDzien = null)
        {
            var Query = QueryStringParser <NieuregulowanaFakturaZakupu> .Parse(
                (from fz in db.NieuregulowanaFakturaZakupus
                 where fz.IdFirmy == idFirmy &&
                 fz.IdRoku == idRoku &&
                 (idKontrahenta.HasValue ? fz.IdKontrahenta == idKontrahenta : true) &&
                 fz.KwotaNieuregulowana != 0
                 select fz).SortBy(asc, desc, "DataFaktury"), new NieuregulowanaFakturyZakupuDictionary(), ref search
                );

            if (search != null)
            {
                Query = Query.Where(
                    q => q.NumerFaktury.Contains(search.ToLower()) ||
                    q.Opis.Contains(search.ToLower()) ||
                    q.NumerFaktury.Contains(search.ToLower())
                    );
            }

            if (stanNaDzien.HasValue)
            {
                Query = Query.Where(p => p.TerminPlatnosci <= stanNaDzien.Value);
            }

            if (idKontrahenta.HasValue)
            {
                Query = Query.Where(q => q.IdKontrahenta == idKontrahenta);
            }

            return(new PagedSearchedQueryResult <NieuregulowanaFakturaZakupu>(Query, page, pageSize, search));
        }
Exemplo n.º 16
0
        public void GetFilterOrDefaultShouldReturnValueWhenFilterDefinedInQuery()
        {
            const string value = "s";

            var result = new Http.Rest.Query(QueryStringParser.Parse($"?filter[name]={value}")).GetFilterOrDefault("name", "s");

            Assert.Equal(value, result);
        }
Exemplo n.º 17
0
        public void GetFilterOrDefaultShouldReturnDefaultWhenFilterNotDefinedInQuery()
        {
            const string defaultValue = "s";

            var result = new Http.Rest.Query(QueryStringParser.Parse("")).GetFilterOrDefault("name", defaultValue);

            Assert.Equal(defaultValue, result);
        }
Exemplo n.º 18
0
        /// <summary>
        /// Outputs GET request compatible set of hidden input fields representing the current state of the parameters object
        /// </summary>
        /// <typeparam name="TModel">object containing parameters (i.e. SearchResult)</typeparam>
        /// <typeparam name="TParameters">parameters</typeparam>
        /// <returns>Html string containing a set of hidden input types representing the current state of the parameters object</returns>
        public static IHtmlString SearchifyMvcRenderParametersAsHiddenInput <TModel, TParameters>(this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TParameters> > expression) where TParameters : Parameters, new()
        {
            var nvc = QueryStringParser <TParameters> .Parse(expression.Compile()(htmlHelper.ViewData.Model));

            var tags = string.Join(Environment.NewLine, nvc.AllKeys.SelectMany(key => HiddenParameter(key, nvc.GetValues(key))).ToList());

            return(MvcHtmlString.Create(tags));
        }
Exemplo n.º 19
0
        public void ParseQueryStringShouldReturnArrayValue()
        {
            var url   = new Url("GET", "https://localhost:80/?field=asd&field=acd&field=axd");
            var query = QueryStringParser.Parse(url.Query);

            Assert.Equal("axd", query.GetValue("field"));
            Assert.Equal(new[] { "asd", "acd", "axd" }, query.GetValues("field"));
        }
        protected override async Task <bool> GetHtmlAsync(IOwinEnvironment context, IClient client, CancellationToken cancellationToken)
        {
            var queryString = QueryStringParser.Parse(context.Request.QueryString, _logger);

            var stateToken       = queryString.GetString("state");
            var parsedStateToken = new StateTokenParser(client, _configuration.Client.ApiKey, stateToken, _logger);

            if (!parsedStateToken.Valid)
            {
                _logger.Warn("State token was invalid", nameof(GithubCallbackRoute));
                return(await HttpResponse.Redirect(context, SocialExecutor.CreateErrorUri(_configuration.Web.Login, stateToken: null)));
            }

            var code = queryString.GetString("code");

            if (string.IsNullOrEmpty(code))
            {
                _logger.Warn("Social code was empty", nameof(GithubCallbackRoute));
                return(await HttpResponse.Redirect(context, SocialExecutor.CreateErrorUri(_configuration.Web.Login, stateToken)));
            }

            var accessToken = await ExchangeCodeAsync(code, cancellationToken);

            if (string.IsNullOrEmpty(accessToken))
            {
                _logger.Warn("Exchanged access token was null", source: nameof(GithubCallbackRoute));
                return(await HttpResponse.Redirect(context, SocialExecutor.CreateErrorUri(_configuration.Web.Login, stateToken)));
            }

            var application = await client.GetApplicationAsync(_configuration.Application.Href, cancellationToken);

            var socialExecutor = new SocialExecutor(client, _configuration, _handlers, _logger);

            try
            {
                var providerRequest = client.Providers()
                                      .Github()
                                      .Account()
                                      .SetAccessToken(accessToken)
                                      .Build();

                var loginResult =
                    await socialExecutor.LoginWithProviderRequestAsync(context, providerRequest, cancellationToken);

                await socialExecutor.HandleLoginResultAsync(
                    context,
                    application,
                    loginResult,
                    cancellationToken);

                return(await socialExecutor.HandleRedirectAsync(client, context, loginResult, parsedStateToken.Path, cancellationToken));
            }
            catch (Exception ex)
            {
                _logger.Warn($"Got '{ex.Message}' during social login request", source: nameof(GithubCallbackRoute));
                return(await HttpResponse.Redirect(context, SocialExecutor.CreateErrorUri(_configuration.Web.Login, stateToken)));
            }
        }
        public static string SearchifyMvcSearchAction <TParameters>(this UrlHelper urlHelper, TParameters parameters) where TParameters : Parameters, new()
        {
            var nvc = QueryStringParser <TParameters> .Parse(parameters);

            var currentNvc = HttpUtility.ParseQueryString(urlHelper.RequestContext.HttpContext.Request.Url?.Query ?? "");

            var searchNvc = MergeAndSortNameValueCollection <TParameters>(currentNvc, nvc);

            return($"{(searchNvc.HasKeys() ? "?" : "")}{searchNvc}");
        }
Exemplo n.º 22
0
        protected override async Task <bool> GetHtmlAsync(IOwinEnvironment context, IClient client, CancellationToken cancellationToken)
        {
            var queryString       = QueryStringParser.Parse(context.Request.QueryString, _logger);
            var viewModelBuilder  = new RegisterFormViewModelBuilder(client, _configuration, queryString, null, _logger);
            var registerViewModel = viewModelBuilder.Build();

            await RenderViewAsync(context, _configuration.Web.Register.View, registerViewModel, cancellationToken);

            return(true);
        }
        public static string SearchifyMvcSearchAction <TParameters>(this UrlHelper urlHelper, string actionName, string controllerName, TParameters parameters) where TParameters : Parameters, new()
        {
            var nvc = QueryStringParser <TParameters> .Parse(parameters);

            var baseUri = new Uri($"http://tempuri.org{urlHelper.Action(actionName, controllerName)}");

            var searchNvc = MergeAndSortNameValueCollection <TParameters>(HttpUtility.ParseQueryString(baseUri.Query), nvc);

            return($"{baseUri.GetComponents(UriComponents.Path, UriFormat.Unescaped)}{(searchNvc.HasKeys() ? "?" : "")}{searchNvc}");
        }
Exemplo n.º 24
0
        public IEnumerable<Tuple<int, NameValueCollection>> PagingGroup(int range = 5)
        {
            var fromPage = (Page - range) <= 0 ? 1 : Page - range;
            var toPage = (Page + range) > Pages ? Pages : Page + range;

            for (var page = fromPage; page <= toPage; page++)
            {
                var nvc = QueryStringParser<TParameters>.Parse(ForPage(page));
                yield return new Tuple<int, NameValueCollection>(page, nvc);
            }
        }
Exemplo n.º 25
0
	    public IEnumerable<Tuple<int, Dictionary<string, Microsoft.Extensions.Primitives.StringValues>>> PagingGroup(int range = 5)
	    {
	        var fromPage = (Page - range) <= 0 ? 1 : Page - range;
	        var toPage = (Page + range) > Pages ? Pages : Page + range;

	        for (var page = fromPage; page <= toPage; page++)
	        {
	            var nvc = QueryStringParser<TParameters>.Parse(ForPage(page));
	            yield return new Tuple<int, Dictionary<string, Microsoft.Extensions.Primitives.StringValues>>(page, nvc);
	        }
	    }
        public void Parse_WithQuestionMark()
        {
            // Assign
            string query = "?";

            // Act
            var result = QueryStringParser.Parse(query);

            // Assert
            result.Should().Equal(new Dictionary <string, WireMockList <string> >());
        }
        public void Parse_WithMultipleParamWithSameKey()
        {
            // Assign
            string query = "?key=value&key=anotherValue";

            // Act
            var result = QueryStringParser.Parse(query);

            // Assert
            result.Count.Should().Be(1);
            result["key"].Should().Equal(new WireMockList <string>(new[] { "value", "anotherValue" }));
        }
        public void Parse_With1ParamNoValueWithEqualSign()
        {
            // Assign
            string query = "?empty=";

            // Act
            var result = QueryStringParser.Parse(query);

            // Assert
            result.Count.Should().Be(1);
            result["empty"].Should().Equal(new WireMockList <string>());
        }
        public void Parse_With1Param()
        {
            // Assign
            string query = "?key=bla/blub.xml";

            // Act
            var result = QueryStringParser.Parse(query);

            // Assert
            result.Count.Should().Be(1);
            result["key"].Should().Equal(new WireMockList <string>("bla/blub.xml"));
        }
        public void Parse_With1ParamContainingSpacesAndEqualSign()
        {
            // Assign
            string query = "?q=SELECT Id from User where username='******'";

            // Act
            var result = QueryStringParser.Parse(query);

            // Assert
            result.Count.Should().Be(1);
            result["q"].Should().Equal(new WireMockList <string>("SELECT Id from User where username='******'"));
        }