public void TestParser()
        {
            SessionParser          parser       = new SessionParser();
            var                    options      = new StressTesterConfiguration();
            List <HttpRequestData> httpRequests = parser.ParseFile(STR_TestFile, ref options);

            Assert.IsNotNull(httpRequests);

            Console.WriteLine(httpRequests.Count);
            foreach (var req in httpRequests)
            {
                Console.WriteLine("--\r\n");
                Console.WriteLine(req.HttpVerb + " -- " + req.Url);
                Console.WriteLine(req.Host);
                foreach (var header in req.Headers)
                {
                    Console.WriteLine(" " + header.Name + ": " + header.Value);
                }

                if (!string.IsNullOrEmpty(req.RequestContent))
                {
                    Console.WriteLine("\r\n" + req.RequestContent);
                }
            }
        }
Пример #2
0
        public void ExportPostman()
        {
            SessionParser          parser       = new SessionParser();
            var                    options      = new StressTesterConfiguration();
            List <HttpRequestData> httpRequests = parser.ParseFile(STR_WebSurgeSampleFile, ref options);

            var postman = new PostmanIntegration();

            string result = postman.Export("Test", httpRequests, options);

            Assert.IsNotNull(result, "postman export failed: nothing returned");

            Console.WriteLine(result);
        }
        public void TestParserLf()
        {
            SessionParser parser  = new SessionParser();
            var           options = new StressTesterConfiguration();

            string reqs = @"POST http://localhost:5000/api/BodyTypes/JsonStringBody HTTP/1.1
Accept-Encoding: gzip,deflate
Content-type: application / json
Websurge-Request-Name: JsonStringBody

""Windy Rivers are the best!""

------------------------------------------------------------------

POST http://localhost:5000/api/BodyTypes/JsonPlainBody HTTP/1.1
Accept-Encoding: gzip,deflate
Content-type: text/plain
Websurge-Request-Name: JsonPlainBody

Windy Rivers are the best!
";

            reqs = reqs.Replace("\r\n", "\n");


            List <HttpRequestData> httpRequests = parser.Parse(reqs, ref options);

            Assert.IsNotNull(httpRequests);

            Console.WriteLine(httpRequests.Count);
            foreach (var req in httpRequests)
            {
                Console.WriteLine("--\r\n");
                Console.WriteLine(req.HttpVerb + " -- " + req.Url);
                Console.WriteLine(req.Host);
                foreach (var header in req.Headers)
                {
                    Console.WriteLine(" " + header.Name + ": " + header.Value);
                }
                if (!string.IsNullOrEmpty(req.RequestContent))
                {
                    Console.WriteLine("\r\n" + req.RequestContent);
                }
            }
        }
        public string Export(string name, List <HttpRequestData> requests, StressTesterConfiguration config, string filename = null)
        {
            var pm = new PostmanCollection();

            foreach (var request in requests)
            {
                pm.info._postman_id = Guid.NewGuid().ToString();
                if (!string.IsNullOrEmpty(name))
                {
                    pm.info.name = name;
                }
                else
                {
                    pm.info.name = "Collection-" + DataUtils.GenerateUniqueId(8);
                }
                pm.info.schema = "https://schema.getpostman.com/json/collection/v2.1.0/collection.json";

                var item = new Item();
                pm.item.Add(item);

                item.name = request.Url;

                var req = new Request();
                item.request = req;

                req.url    = new Url();
                req.method = request.HttpVerb;

                var body = new Body();
                req.body  = body;
                body.mode = "raw";
                body.raw  = request.RequestContent;

                // don't copy over credentials explicitly
                //if (!string.IsNullOrEmpty(config.Username))
                //{
                //    req.auth = new Auth();
                //    req.auth.type = "ntlm";
                //    var ntlm = new List<Ntlm>();
                //    req.auth.ntlm = ntlm;
                //    ntlm.Add(new Ntlm {key = "username", value = config.Username});
                //    ntlm.Add(new Ntlm {key = "password", value = ""});
                //}

                foreach (var header in request.Headers)
                {
                    req.header.Add(new Header
                    {
                        key = header.Name, name = header.Name, value = header.Value, type = "text"
                    });
                }

                req.url.raw      = request.Url;
                req.url.protocol = "http";
                req.url.host.Add(request.Host);
            }

            if (!string.IsNullOrEmpty(filename))
            {
                if (JsonSerializationUtils.SerializeToFile(pm, filename, false, true))
                {
                    return("OK");
                }

                return(null);
            }

            return(JsonSerializationUtils.Serialize(pm, false, formatJsonOutput: true));
        }