Esempio n. 1
0
        public Wrapper PopulateWrapper(Wrapper wrapper, WebResponseModel webResponse)
        {
            wrapper.ApiCommandUrl  = webResponse.Url;
            wrapper.ApiRawResponse = webResponse.Payloay;

            return(wrapper);
        }
Esempio n. 2
0
        public Header PopulateHeader(Header header, WebResponseModel webResponse)
        {
            header.statusCode        = webResponse.StatusCode;
            header.statusDescription = webResponse.StatusDescription;

            return(header);
        }
Esempio n. 3
0
        /// <summary>
        /// This method delete the ticket and logout the user
        /// </summary>
        /// <param name="createUser">createUser</param>
        /// <returns>string</returns>
        public object CreateUser(CreateUserRequest createUser)
        {
            WebResponseModel response = new WebResponseModel();

            if (HttpContext.Current.Items[Filter.Token] != null)
            {
                response = this._apiHelper.Submit(ServiceUrl.CreateUser + HttpContext.Current.Items[Filter.Token], JsonConvert.SerializeObject(createUser.User));
            }

            if (response.status == NextGenCMS.Model.constants.ApiHelper.StatusCode.Success)
            {
                UserWithGroups data = JsonConvert.DeserializeObject <UserWithGroups>(response.message);

                var obj = new ApiResponseModel <UserWithGroups>
                {
                    Status = response.status,
                    Result = data
                };

                response = this._apiHelper.Submit(ServiceUrl.AddUserRole + HttpContext.Current.Items[Filter.Token], JsonConvert.SerializeObject(createUser.UserRole));
                return(obj);
            }
            else
            {
                ResponseError data = JsonConvert.DeserializeObject <ResponseError>(response.message);

                var obj = new ApiResponseModel <ResponseError>
                {
                    Status = response.status,
                    Result = data
                };
                return(obj);
            }
        }
Esempio n. 4
0
        public WebResponseModel MakeGetRequest(RequestModel requestModel)
        {
            var url = requestModel.ApiBaseUrl + "/" + requestModel.Action;

            if (requestModel.Parameters.Count >= 1)
            {
                url = string.Format("{0}{1}{2}", url, "?", string.Join("&", (from parameter in requestModel.Parameters
                                                                             where parameter.Value != null select string.Format("{0}={1}", parameter.Key, parameter.Value))));
            }

            var webResponseModel = new WebResponseModel()
            {
                Url = url
            };

            var request = (HttpWebRequest)WebRequest.Create(url);

            request.Method = "GET";

            var response     = (HttpWebResponse)request.GetResponse();
            var streamReader = new StreamReader(response.GetResponseStream());

            webResponseModel.Payloay           = streamReader.ReadToEnd();
            webResponseModel.StatusCode        = (int)response.StatusCode;
            webResponseModel.StatusDescription = response.StatusDescription;
            webResponseModel.Url = url;

            return(webResponseModel);
        }
Esempio n. 5
0
        public StatusCodes StatusCodesModel(WebResponseModel webResponse, StatusCodes statusCodes)
        {
            statusCodes         = JsonConvert.DeserializeObject <StatusCodes>(webResponse.Payloay, JsonSerializerSettings);
            statusCodes.Header  = PopulateHeader(statusCodes.Header, webResponse);
            statusCodes.Wrapper = PopulateWrapper(statusCodes.Wrapper, webResponse);

            return(statusCodes);
        }
Esempio n. 6
0
        public Endpoint EndpointModel(WebResponseModel webResponse, Endpoint endpointModel)
        {
            endpointModel         = JsonConvert.DeserializeObject <Endpoint>(webResponse.Payloay, JsonSerializerSettings);
            endpointModel.Header  = PopulateHeader(endpointModel.Header, webResponse);
            endpointModel.Wrapper = PopulateWrapper(endpointModel.Wrapper, webResponse);

            return(endpointModel);
        }
Esempio n. 7
0
        public bool SavePermissions(SavePermission permissions)
        {
            WebResponseModel response = new WebResponseModel();

            if (HttpContext.Current.Items[Filter.Token] != null)
            {
                response = this._apiHelper.Submit(ServiceUrl.Permissions + permissions.nodeId + "?alf_ticket=" + HttpContext.Current.Items[Filter.Token], JsonConvert.SerializeObject(permissions));
            }

            return(true);
        }
Esempio n. 8
0
        public Info InfoModel(WebResponseModel webResponse, Info infoModel)
        {
            if (webResponse.Payloay == null)
            {
                throw new Exception("webResponse payload is null. Unable to bind null.");
            }

            infoModel         = JsonConvert.DeserializeObject <Info>(webResponse.Payloay, JsonSerializerSettings);
            infoModel.Header  = PopulateHeader(infoModel.Header, webResponse);
            infoModel.Wrapper = PopulateWrapper(infoModel.Wrapper, webResponse);

            return(infoModel);
        }
Esempio n. 9
0
 /// <summary>
 /// Used for posting to API
 /// </summary>
 /// <param name="uri">Address of api</param>
 /// <param name="parameters">json object</param>
 /// <returns>response</returns>
 public WebResponseModel Submit(string uri, string parameters)
 {
     try
     {
         ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return(true); });
         WebRequest req = WebRequest.Create(uri);
         //req.Headers.Add(CommonConstants.x_thirdparty_Id, CommonConstants.ProviderSelfService);
         //Add these, as we're doing a POST
         req.ContentType = ApiHelper.application_json;
         req.Timeout     = 1000000;
         req.Method      = ApiHelper.Post;
         if (!string.IsNullOrEmpty(parameters))
         {
             using (var streamWriter = new StreamWriter(req.GetRequestStream()))
             {
                 streamWriter.Write(parameters);
             }
         }
         using (WebResponse resp = req.GetResponse())
         {
             StreamReader sr       = new StreamReader(resp.GetResponseStream());
             var          response = new WebResponseModel
             {
                 status  = NextGenCMS.Model.constants.ApiHelper.StatusCode.Success,
                 message = sr.ReadToEnd().Trim()
             };
             return(response);
         }
     }
     catch (WebException wex)
     {
         if (wex.Response != null)
         {
             using (var errorResponse = (HttpWebResponse)wex.Response)
             {
                 using (var reader = new StreamReader(errorResponse.GetResponseStream()))
                 {
                     var response = new WebResponseModel
                     {
                         status  = NextGenCMS.Model.constants.ApiHelper.StatusCode.Exception,
                         message = reader.ReadToEnd().Trim()
                     };
                     return(response);
                 }
             }
         }
         throw;
     }
 }
Esempio n. 10
0
        public Analyze AnalyzeModel(WebResponseModel webResponse, Analyze analyzeModel)
        {
            analyzeModel         = JsonConvert.DeserializeObject <Analyze>(webResponse.Payloay, JsonSerializerSettings);
            analyzeModel.Header  = PopulateHeader(analyzeModel.Header, webResponse);
            analyzeModel.Wrapper = PopulateWrapper(analyzeModel.Wrapper, webResponse);

            if (analyzeModel.status == "ERROR")
            {
                analyzeModel.Errors.Add(new Error()
                {
                    message = analyzeModel.statusMessage
                });
            }

            return(analyzeModel);
        }
Esempio n. 11
0
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();
            var webResponseModel  = new WebResponseModel()
            {
                Payloay           = "",
                StatusCode        = 0,
                StatusDescription = "",
                Url = ""
            };

            mockedApiProvider.Setup(x => x.MakeGetRequest(It.IsAny <RequestModel>())).Returns(webResponseModel);

            var ssllService = new SSLLabsApiService("https://blah-blah.dev.ssllabs.com/api/blah/", mockedApiProvider.Object);

            Response = ssllService.Info();
        }
Esempio n. 12
0
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();
            var webResponseModel  = new WebResponseModel()
            {
                Payloay           = "{\"engineVersion\":\"1.11.4\",\"criteriaVersion\":\"2009i\",\"clientMaxAssessments\":5,\"notice\":\"Some notice goes here\"}",
                StatusCode        = 200,
                StatusDescription = "Ok",
                Url = "https://api.ssllabs.com/api/v2/info"
            };

            mockedApiProvider.Setup(x => x.MakeGetRequest(It.IsAny <RequestModel>())).Returns(webResponseModel);

            var ssllService = new SSLLabsApiService("https://api.ssllabs.com/api/v2/", mockedApiProvider.Object);

            Response = ssllService.Info();
        }
Esempio n. 13
0
        /// <summary>
        /// This method delete the ticket and logout the user
        /// </summary>
        /// <param name="createUser">createUser</param>
        /// <returns>string</returns>
        public WebResponseModel CreateGroup(Group group)
        {
            WebResponseModel   response         = new WebResponseModel();
            GroupExistResponse responseNotExist = new GroupExistResponse();
            GetGroupsResponse  responseExist    = new GetGroupsResponse();

            if (HttpContext.Current.Items[Filter.Token] != null)
            {
                string uri = System.Web.HttpUtility.UrlPathEncode(ServiceUrl.Groups + group.fullName + ServiceUrl.GroupExistSuffix + ServiceUrl.AlfTicket + HttpContext.Current.Items[Filter.Token]);
                try
                {
                    var data = this._apiHelper.Get(uri);
                    responseExist = JsonConvert.DeserializeObject <GetGroupsResponse>(data);
                }
                catch (WebException wex)
                {
                    if (wex.Response != null)
                    {
                        using (var errorResponse = (HttpWebResponse)wex.Response)
                        {
                            using (var reader = new StreamReader(errorResponse.GetResponseStream()))
                            {
                                string message = reader.ReadToEnd().Trim();
                                responseNotExist = JsonConvert.DeserializeObject <GroupExistResponse>(message);
                            }
                        }
                    }
                }
                finally
                {
                    if (responseNotExist.status != null && responseNotExist.status.code == 404)
                    {
                        response = this._apiHelper.Submit(ServiceUrl.AddGroups + group.fullName + "?alf_ticket=" + HttpContext.Current.Items[Filter.Token], JsonConvert.SerializeObject(group));
                    }
                    else
                    {
                        response.status = NextGenCMS.Model.constants.ApiHelper.StatusCode.Exception;
                    }
                }
            }
            return(response);
        }
Esempio n. 14
0
 /// <summary>
 /// Used for posting to API
 /// </summary>
 /// <param name="uri">Address of api</param>
 /// <param name="parameters">json object</param>
 /// <returns>response</returns>
 public string Put(string uri, string parameters)
 {
     try
     {
         ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return(true); });
         WebRequest req = WebRequest.Create(uri);
         req.ContentType = ApiHelper.application_json;
         req.Timeout     = 1000000;
         req.Method      = ApiHelper.Put;
         if (!string.IsNullOrEmpty(parameters))
         {
             using (var streamWriter = new StreamWriter(req.GetRequestStream()))
             {
                 streamWriter.Write(parameters);
             }
         }
         using (WebResponse resp = req.GetResponse())
         {
             StreamReader sr       = new StreamReader(resp.GetResponseStream());
             string       response = sr.ReadToEnd().Trim();
             return(response);
         }
     }
     catch (WebException wex)
     {
         if (wex.Response != null)
         {
             using (var errorResponse = (HttpWebResponse)wex.Response)
             {
                 using (var reader = new StreamReader(errorResponse.GetResponseStream()))
                 {
                     var response = new WebResponseModel
                     {
                         status  = NextGenCMS.Model.constants.ApiHelper.StatusCode.Exception,
                         message = reader.ReadToEnd().Trim()
                     };
                 }
             }
         }
         throw;
     }
 }
Esempio n. 15
0
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();

            TestHost = "https://www.ashleypoole.co.uk";
            var webResponseModel = new WebResponseModel()
            {
                Payloay           = "{\"errors\":[{\"message\":\"Parameters \u0027fromCache\u0027 and \u0027startNew\u0027 cannot be used at the same time\"}]}",
                StatusCode        = 400,
                StatusDescription = "Ok",
                Url = ("https://api.ssllabs.com/api/v2/analyze?host=" + TestHost + "&startNew=on&fromCache=on&all=done")
            };

            mockedApiProvider.Setup(x => x.MakeGetRequest(It.IsAny <RequestModel>())).Returns(webResponseModel);

            var ssllService = new SSLLabsApiService("https://api.ssllabs.com/api/v2/", mockedApiProvider.Object);

            Response = ssllService.Analyze(TestHost, SSLLabsApiService.Publish.On, SSLLabsApiService.StartNew.On,
                                           SSLLabsApiService.FromCache.Ignore, null, SSLLabsApiService.All.Done, SSLLabsApiService.IgnoreMismatch.Off);
        }
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();

            TestHost = "https://www.ashleypoole.co.uk";
            TestIP   = "111.111.111.111";
            var webResponseModel = new WebResponseModel()
            {
                Payloay           = "{\"errors\":[{\"message\":\"Endpoint not found\"}]}",
                StatusCode        = 400,
                StatusDescription = "Bad Request",
                Url = ("https://api.ssllabs.com/api/v2/getEndpointData?host=" + TestHost + "s=" + TestIP)
            };

            mockedApiProvider.Setup(x => x.MakeGetRequest(It.IsAny <RequestModel>())).Returns(webResponseModel);

            var ssllService = new SSLLabsApiService("https://api.ssllabs.com/api/v2/", mockedApiProvider.Object);

            Response = ssllService.GetEndpointData(TestHost, TestIP);
        }
Esempio n. 17
0
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();

            TestHost = "https://www.ashleypoole.co.uk";
            var webResponseModel = new WebResponseModel()
            {
                Payloay = "{\"host\":\"https://www.ashleypoole.co.uk\",\"port\":443,\"protocol\":\"HTTP\",\"isPublic\":false,\"status\":\"DNS\"" +
                          ",\"statusMessage\":\"Resolving domain names\",\"startTime\":1422475200798,\"engineVersion\":\"1.12.8\"," +
                          "\"criteriaVersion\":\"2009i\"}",
                StatusCode        = 200,
                StatusDescription = "Ok",
                Url = ("https://api.ssllabs.com/api/v2/analyze?host=" + TestHost)
            };

            mockedApiProvider.Setup(x => x.MakeGetRequest(It.IsAny <RequestModel>())).Returns(webResponseModel);

            var ssllService = new SSLLabsApiService("https://api.ssllabs.com/api/v2/", mockedApiProvider.Object);

            Response = ssllService.Analyze(TestHost);
        }
Esempio n. 18
0
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();

            TestHost = "https://www2.ashleypoole.co.uk";
            var webResponseModel = new WebResponseModel()
            {
                Payloay = "{\"host\":\"https://www2.ashleypoole.co.uk\",\"port\":443,\"protocol\":\"HTTP\",\"isPublic\":false,\"status\":\"ERROR\"," +
                          "\"statusMessage\":\"Unable to resolve domain name\",\"startTime\":1422478797953,\"testTime\":1422478798017," +
                          "\"engineVersion\":\"1.12.8\",\"criteriaVersion\":\"2009i\",\"cacheExpiryTime\":1422478858017}",
                StatusCode        = 200,
                StatusDescription = "Ok",
                Url = ("https://api.ssllabs.com/api/v2/analyze?host=" + TestHost)
            };

            mockedApiProvider.Setup(x => x.MakeGetRequest(It.IsAny <RequestModel>())).Returns(webResponseModel);

            var ssllService = new SSLLabsApiService("https://api.ssllabs.com/api/v2/", mockedApiProvider.Object);

            Response = ssllService.Analyze(TestHost, SSLLabsApiService.Publish.On, SSLLabsApiService.StartNew.On,
                                           SSLLabsApiService.FromCache.Ignore, null, SSLLabsApiService.All.Done, SSLLabsApiService.IgnoreMismatch.Off);
        }
Esempio n. 19
0
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();
            var webResponseModel  = new WebResponseModel()
            {
                Payloay = "{\"statusDetails\":{\"TESTING_PROTOCOL_INTOLERANCE_399\":\"Testing Protocol Intolerance (TLS 1.99)\",\"" +
                          "PREPARING_REPORT\":\"Preparing the report\",\"TESTING_SESSION_RESUMPTION\":\"Testing session resumption\",\"" +
                          "TESTING_NPN\":\"Testing NPN\",\"RETRIEVING_CERT_V3__NO_SNI\":\"Retrieving certificate\",\"RETRIEVING_CERT_V3__SNI_APEX\"" +
                          ":\"Retrieving certificate\",\"TESTING_CVE_2014_0224\":\"Testing CVE-2014-0224\",\"TESTING_CAPABILITIES\":\"" +
                          "Determining server capabilities\",\"TESTING_HEARTBLEED\":\"Testing Heartbleed\",\"TESTING_PROTO_3_3_V2H\":\"Testing TLS 1.1 (v2 handshake)\"" +
                          ",\"TESTING_SESSION_TICKETS\":\"Testing Session Ticket support\",\"VALIDATING_TRUST_PATHS\":\"Validating trust paths\",\"TESTING_RENEGOTIATION\"" +
                          ":\"Testing renegotiation\",\"TESTING_HTTPS\":\"Sending one complete HTTPS request\",\"TESTING_V2H_HANDSHAKE\":\"Testing v2 handshake\",\"" +
                          "TESTING_STRICT_RI\":\"Testing Strict Renegotiation\",\"TESTING_SUITES_DEPRECATED\":\"Testing deprecated cipher suites\",\"TESTING_HANDSHAKE_SIMULATION" +
                          "\":\"Simulating handshakes\",\"TESTING_STRICT_SNI\":\"Testing Strict SNI\",\"TESTING_PROTO_3_1_V2H\":\"Testing TLS 1.0 (v2 handshake)\",\"" +
                          "TESTING_PROTOCOL_INTOLERANCE_499\":\"Testing Protocol Intolerance (TLS 2.99)\",\"TESTING_TLS_VERSION_INTOLERANCE\":\"Testing TLS version intolerance" +
                          "\",\"TESTING_PROTOCOL_INTOLERANCE_304\":\"Testing Protocol Intolerance (TLS 1.3)\",\"TESTING_SUITES_BULK\":\"Bulk-testing less common cipher suites\",\"" +
                          "TESTING_BEAST\":\"Testing for BEAST\",\"TESTING_PROTO_2_0\":\"Testing SSL 2.0\",\"BUILDING_TRUST_PATHS\":\"Building trust paths\",\"TESTING_PROTO_3_1\":\"" +
                          "Testing TLS 1.0\",\"TESTING_PROTO_3_0_V2H\":\"Testing SSL 3.0 (v2 handshake)\",\"TESTING_PROTO_3_0\":\"Testing SSL 3.0\",\"TESTING_PROTOCOL_INTOLERANCE_300" +
                          "\":\"Testing Protocol Intolerance (SSL 3.0)\",\"TESTING_PROTOCOL_INTOLERANCE_301\":\"Testing Protocol Intolerance (TLS 1.0)\",\"TESTING_PROTOCOL_INTOLERANCE_302" +
                          "\":\"Testing Protocol Intolerance (TLS 1.1)\",\"TESTING_PROTOCOL_INTOLERANCE_303\":\"Testing Protocol Intolerance (TLS 1.2)\",\"TESTING_OCSP_STAPLING_PRIME\":" +
                          "\"Trying to prime OCSP stapling\",\"TESTING_EXTENSION_INTOLERANCE\":\"Testing Extension Intolerance (might take a while)\",\"TESTING_SSL2_SUITES\":\"" +
                          "Checking if SSL 2.0 has any ciphers enabled\",\"TESTING_OCSP_STAPLING\":\"Testing OCSP stapling\",\"TESTING_SUITES\":\"Determining available cipher suites\"," +
                          "\"TESTING_PROTO_3_2_V2H\":\"Testing TLS 1.1 (v2 handshake)\",\"TESTING_POODLE_TLS\":\"Testing POODLE against TLS\",\"RETRIEVING_CERT_V3__SNI_WWW\":\"" +
                          "Retrieving certificate\",\"CHECKING_REVOCATION\":\"Checking for revoked certificates\",\"TESTING_COMPRESSION\":\"Testing compression\",\"TESTING_SUITE_PREFERENCE" +
                          "\":\"Determining cipher suite preference\",\"TESTING_PROTO_3_2\":\"Testing TLS 1.1\",\"TESTING_PROTO_3_3\":\"Testing TLS 1.2\",\"TESTING_LONG_HANDSHAKE\":\"" +
                          "Testing Long Handshake (might take a while)\"}}",
                StatusCode        = 200,
                StatusDescription = "Ok",
                Url = "https://api.ssllabs.com/api/v2/info"
            };

            mockedApiProvider.Setup(x => x.MakeGetRequest(It.IsAny <RequestModel>())).Returns(webResponseModel);

            var ssllService = new SSLLabsApiService("https://api.ssllabs.com/api/v2/", mockedApiProvider.Object);

            Response = ssllService.GetStatusCodes();
        }
Esempio n. 20
0
 public string Delete(string uri)
 {
     try
     {
         ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return(true); });
         WebRequest req = WebRequest.Create(uri);
         req.Method  = ApiHelper.Delete;
         req.Timeout = 1000000;
         //req.Headers.Add(CommonConstants.x_thirdparty_Id, CommonConstants.ProviderSelfService);
         using (WebResponse resp = req.GetResponse())
         {
             StreamReader sr       = new StreamReader(resp.GetResponseStream());
             string       response = sr.ReadToEnd().Trim();
             return(response);// JsonConvert.DeserializeObject<T>(response);
         }
     }
     catch (WebException wex)
     {
         if (wex.Response != null)
         {
             using (var errorResponse = (HttpWebResponse)wex.Response)
             {
                 using (var reader = new StreamReader(errorResponse.GetResponseStream()))
                 {
                     var response = new WebResponseModel
                     {
                         status  = NextGenCMS.Model.constants.ApiHelper.StatusCode.Exception,
                         message = reader.ReadToEnd().Trim()
                     };
                     return(response.message);
                 }
             }
         }
         throw;
     }
 }
Esempio n. 21
0
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();

            TestHost = "https://www.ashleypoole.co.uk";
            var webResponseModel = new WebResponseModel()
            {
                Payloay = "{\"host\":\"https://www.ashleypoole.co.uk\",\"port\":443,\"protocol\":\"HTTP\",\"isPublic\":true,\"" +
                          "status\":\"IN_PROGRESS\",\"startTime\":1422479488403,\"engineVersion\":\"1.12.8\",\"criteriaVersion\":\"2009i\"" +
                          ",\"endpoints\":[{\"ipAddress\":\"104.28.6.2\",\"statusMessage\":\"In progress\",\"statusDetails\":\"TESTING_HTTPS\"" +
                          ",\"statusDetailsMessage\":\"Sending one complete HTTPS request\",\"progress\":-1,\"eta\":-1,\"delegation\":3}," +
                          "{\"ipAddress\":\"104.28.7.2\",\"statusMessage\":\"Pending\",\"progress\":-1,\"eta\":-1,\"delegation\":3}]}",
                StatusCode        = 200,
                StatusDescription = "Ok",
                Url = ("https://api.ssllabs.com/api/v2/analyze?host=" + TestHost + "&publish=on&all=done")
            };

            mockedApiProvider.Setup(x => x.MakeGetRequest(It.IsAny <RequestModel>())).Returns(webResponseModel);

            var ssllService = new SSLLabsApiService("https://api.ssllabs.com/api/v2/", mockedApiProvider.Object);

            Response = ssllService.Analyze(TestHost, SSLLabsApiService.Publish.On, SSLLabsApiService.StartNew.On,
                                           SSLLabsApiService.FromCache.Ignore, null, SSLLabsApiService.All.Done, SSLLabsApiService.IgnoreMismatch.Off);
        }
Esempio n. 22
0
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();

            TestHost = "https://www.ashleypoole.co.uk";
            var webResponseModel = new WebResponseModel()
            {
                Payloay = "{\"host\":\"https://www.ashleypoole.co.uk\",\"port\":443,\"protocol\":\"HTTPS\",\"isPublic\":false,\"status\":\"READY\",\"" +
                          "startTime\":1422115006431,\"testTime\":1422115131804,\"engineVersion\":\"1.12.8\",\"criteriaVersion\":\"2009i\",\"" +
                          "endpoints\":[{\"ipAddress\":\"104.28.6.2\",\"statusMessage\":\"Ready\",\"grade\":\"A\",\"hasWarnings\":false,\"" +
                          "isExceptional\":false,\"progress\":100,\"duration\":64286,\"eta\":2393,\"delegation\":3},{\"ipAddress\":\"104.28.7.2\"" +
                          ",\"statusMessage\":\"Ready\",\"grade\":\"A\",\"hasWarnings\":false,\"isExceptional\":false,\"progress\":100,\"duration\"" +
                          ":61046,\"eta\":2393,\"delegation\":3}]}",
                StatusCode        = 200,
                StatusDescription = "Ok",
                Url = ("https://api.ssllabs.com/api/v2/analyze?host=" + TestHost)
            };

            mockedApiProvider.Setup(x => x.MakeGetRequest(It.IsAny <RequestModel>())).Returns(webResponseModel);

            var ssllService = new SSLLabsApiService("https://api.ssllabs.com/api/v2/", mockedApiProvider.Object);

            Response = ssllService.Analyze(TestHost);
        }
Esempio n. 23
0
        public void Upload(string url)
        {
            try
            {
                HttpWebRequest requestToServerEndpoint = (HttpWebRequest)WebRequest.Create(url + HttpContext.Current.Request.Form["token"]);
                string         boundaryString          = "----WebKitFormBoundaryYHCnoErwHmT3HVf4";
                requestToServerEndpoint.Method      = WebRequestMethods.Http.Post;
                requestToServerEndpoint.ContentType = "multipart/form-data; boundary=" + boundaryString;
                requestToServerEndpoint.KeepAlive   = true;
                requestToServerEndpoint.Credentials = System.Net.CredentialCache.DefaultCredentials;

                MemoryStream postDataStream = new MemoryStream();
                StreamWriter postDataWriter = new StreamWriter(postDataStream);

                postDataWriter.Write("\r\n--" + boundaryString + "\r\n");
                postDataWriter.Write("Content-Disposition: form-data;" + "name=\"{0}\";" + "filename=\"{1}\"" + "\r\nContent-Type: {2}\r\n\r\n",
                                     "filedata", HttpContext.Current.Request.Files[0].FileName, HttpContext.Current.Request.Files[0].ContentType);
                postDataWriter.Write("\r\n--" + boundaryString + "\r\n");
                postDataWriter.Write("Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}", "siteId", "ahmar");
                postDataWriter.Write("\r\n--" + boundaryString + "\r\n");
                postDataWriter.Write("Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}", "containerId", "documentLibrary");
                postDataWriter.Write("\r\n--" + boundaryString + "\r\n");
                postDataWriter.Write("Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}", "uploaddirectory", "/CSC/");
                postDataWriter.Flush();

                Stream fileStream = HttpContext.Current.Request.Files[0].InputStream;
                byte[] buffer     = new byte[1024];
                int    bytesRead  = 0;
                while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
                {
                    postDataStream.Write(buffer, 0, bytesRead);
                }
                fileStream.Close();

                postDataWriter.Write("\r\n--" + boundaryString + "--\r\n");
                postDataWriter.Flush();
                requestToServerEndpoint.ContentLength = postDataStream.Length;
                using (Stream requestStream = requestToServerEndpoint.GetRequestStream())
                {
                    postDataStream.WriteTo(requestStream);
                }
                postDataStream.Close();
                WebResponse  response        = requestToServerEndpoint.GetResponse();
                StreamReader responseReader  = new StreamReader(response.GetResponseStream());
                string       replyFromServer = responseReader.ReadToEnd();
            }
            catch (WebException wex)
            {
                if (wex.Response != null)
                {
                    using (var errorResponse = (HttpWebResponse)wex.Response)
                    {
                        using (var reader = new StreamReader(errorResponse.GetResponseStream()))
                        {
                            var response = new WebResponseModel
                            {
                                status  = NextGenCMS.Model.constants.ApiHelper.StatusCode.Exception,
                                message = reader.ReadToEnd().Trim()
                            };
                        }
                    }
                }
                throw;
            }
        }
        public static void Setup(TestContext testContext)
        {
            var mockedApiProvider = new Mock <IApiProvider>();

            TestHost    = "https://www.ashleypoole.co.uk";
            TestIP      = "104.28.6.2";
            TestAltName = "ashleypoole.co.uk";
            var webResponseModel = new WebResponseModel()
            {
                Payloay = "{\"ipAddress\":\"104.28.6.2\",\"statusMessage\":\"Ready\",\"grade\":\"A\",\"hasWarnings\":false,\"isExceptional\":false,\"progress\":100," +
                          "\"duration\":72382,\"eta\":2,\"delegation\":3,\"details\":{\"hostStartTime\":1422796942752,\"key\":{\"size\":  256,\"alg\":\"EC\",\"strength\"" +
                          ":3072},\"cert\":{\"subject\":  \"CN\u003dsni25535.cloudflaressl.com,OU\u003dPositiveSSL Multi-Domain,OU\u003dDomain Control Validated\",  \"commonNames\"" +
                          ":[\"sni25535.cloudflaressl.com\"],\"altNames\":[\"sni25535.cloudflaressl.com\",\"*.ashleypoole.co.uk\",\"ashleypoole.co.uk\"],\"notBefore\":1412294400000,\"" +
                          "notAfter\":1443657599000, \"issuerSubject\": \"CN\u003dCOMODO ECC Domain Validation Secure Server CA 2,O\u003dCOMODO CA Limited,L\u003dSalford,ST\u003d" +
                          "Greater Manchester,C\u003dGB\",\"sigAlg\":\"SHA256withECDSA\",\"issuerLabel\":\"COMODO ECC Domain Validation Secure Server CA 2\",\"revocationInfo\":3,\"" +
                          "crlURIs\":[\"http://crl.comodoca4.com/COMODOECCDomainValidationSecureServerCA2.crl\"],\"ocspURIs\":[\"http://ocsp.comodoca4.com\"],\"revocationStatus\":2," +
                          "\"sgc\": 0,\"validationType\":\"D\",\"issues\":0},\"chain\":{\"certs\":[{\"subject\":\"CN\u003dsni25535.cloudflaressl.com,OU\u003dPositiveSSL Multi-Domain,OU\u003dDomain Control Validated\"," +
                          "\"label\":\"sni25535.cloudflaressl.com\",\"issuerSubject\":\"CN\u003dCOMODO ECC Domain Validation Secure Server CA 2,O\u003dCOMODO CA Limited,L\u003dSalford," +
                          "ST\u003dGreater Manchester,C\u003dGB\",\"issuerLabel\":\"COMODO ECC Domain Validation Secure Server CA 2\",\"raw\":\"-----BEGIN CERTIFICATE-----\n" +
                          "MIIGvjCCBmWgAwIBAgIRALF5GuZKQORJW1QMc46ynb0wCgYIKoZIzj0EAwIwgZIxCzAJBgNVBAYT\r\nAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNV\r" +
                          "\nBAoTEUNPTU9ETyBDQSBMaW1pdGVkMTgwNgYDVQQDEy9DT01PRE8gRUNDIERvbWFpbiBWYWxpZGF0\r\naW9uIFNlY3VyZSBTZXJ2ZXIgQ0EgMjAeFw0xNDEwMDMwMDAwMDBaFw0xNTA5MzAyMzU5NTlaMGsx\r\n" +
                          "ITAfBgNVBAsTGERvbWFpbiBDb250cm9sIFZhbGlkYXRlZDEhMB8GA1UECxMYUG9zaXRpdmVTU0wg\r\nTXVsdGktRG9tYWluMSMwIQYDVQQDExpzbmkyNTUzNS5jbG91ZGZsYXJlc3NsLmNvbTBZMBMGByqG\r\n" +
                          "SM49AgEGCCqGSM49AwEHA0IABORKHcGfCBQWiWrulPF3cKWXMbma/cST468asBpJ5gakOx1CqIbA\r\nTaqVsoGbMYdOVLe53eNsID9MI3RqxRobozOjggTAMIIEvDAfBgNVHSMEGDAWgBRACWFn8LyDcU/e\r\n" +
                          "Eggsb9TUK3Y9ljAdBgNVHQ4EFgQUY3rb5UBQMdvLQvjzLEROu0aOvyUwDgYDVR0PAQH/BAQDAgeA\r\nMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCME8GA1UdIARIMEYw\r\n" +
                          "OgYLKwYBBAGyMQECAgcwKzApBggrBgEFBQcCARYdaHR0cHM6Ly9zZWN1cmUuY29tb2RvLmNvbS9D\r\nUFMwCAYGZ4EMAQIBMFYGA1UdHwRPME0wS6BJoEeGRWh0dHA6Ly9jcmwuY29tb2RvY2E0LmNvbS9D\r\n" +
                          "T01PRE9FQ0NEb21haW5WYWxpZGF0aW9uU2VjdXJlU2VydmVyQ0EyLmNybDCBiAYIKwYBBQUHAQEE\r\nfDB6MFEGCCsGAQUFBzAChkVodHRwOi8vY3J0LmNvbW9kb2NhNC5jb20vQ09NT0RPRUNDRG9tYWlu\r\n" +
                          "VmFsaWRhdGlvblNlY3VyZVNlcnZlckNBMi5jcnQwJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLmNv\r\nbW9kb2NhNC5jb20wggMHBgNVHREEggL+MIIC+oIac25pMjU1MzUuY2xvdWRmbGFyZXNzbC5jb22C\r\n" +
                          "EyouYXNobGV5cG9vbGUuY28udWuCIiouYXNzZXRkZXZlbG9wZXJzaW50ZXJuYXRpb25hbC5jb22C\r\nEyouYmxvZ2VzY2VwdGljby5jb22CECouYm93bG1hbnByaXYudGuCESouY2FzYW5lcm8uY29tLmJy\r\n" +
                          "ghAqLmNoZXptaXMuY29tLmJygggqLmRuei5iZYIWKi5lc3BvcnRzdW5saW1pdGVkLmNvbYIPKi5o\r\nZHRyYWlsZXJzLnJvghAqLmhnbWFuaWEuY29tLmJyghcqLmhvdGVsYWxhbW9zcG9zYWRhLmNvbYIX\r\n" +
                          "Ki5rYXJuYWtwcm9idWlsZGVycy5jb22CEioubG91YmVlemFydC5jby51a4IOKi5tZWdvYWZlay5j\r\nb22CESoubXlkcnVnY29zdHMuY29tghgqLm5lcmRjdWJlZHNlcnZlcnMuY28udWuCEioucG9saXRj\r\n" +
                          "YXN0LXVyaS5jaIISKi53aGl0bWFubG9kZ2Uub3JnggsqLnd5bHN0LmNvbYIRYXNobGV5cG9vbGUu\r\nY28udWuCIGFzc2V0ZGV2ZWxvcGVyc2ludGVybmF0aW9uYWwuY29tghFibG9nZXNjZXB0aWNvLmNv\r\n" +
                          "bYIOYm93bG1hbnByaXYudGuCD2Nhc2FuZXJvLmNvbS5icoIOY2hlem1pcy5jb20uYnKCBmRuei5i\r\nZYIUZXNwb3J0c3VubGltaXRlZC5jb22CDWhkdHJhaWxlcnMucm+CDmhnbWFuaWEuY29tLmJyghVo\r\n" +
                          "b3RlbGFsYW1vc3Bvc2FkYS5jb22CFWthcm5ha3Byb2J1aWxkZXJzLmNvbYIQbG91YmVlemFydC5j\r\nby51a4IMbWVnb2FmZWsuY29tgg9teWRydWdjb3N0cy5jb22CFm5lcmRjdWJlZHNlcnZlcnMuY28u\r\n" +
                          "dWuCEHBvbGl0Y2FzdC11cmkuY2iCEHdoaXRtYW5sb2RnZS5vcmeCCXd5bHN0LmNvbTAKBggqhkjO\r\nPQQDAgNHADBEAiBvjsgIaYlNMYg2ZkQ+i4zvWb5emdogr7Of5YoPbnAZigIgG9TjdWNBqfGL4Q6O\r\n" +
                          "FYr4C7e/1G6x/0Fz+LdWk3pbD3s\u003d\r\n-----END CERTIFICATE-----\n\"},    {\"subject\":\"CN\u003dCOMODO ECC Domain Validation Secure Server CA 2,O\u003d" +
                          "COMODO CA Limited,L\u003dSalford,ST\u003dGreater Manchester,C\u003dGB\",\"label\":\"COMODO ECC Domain Validation Secure Server CA 2\",\"issuerSubject\":\"" +
                          "CN\u003dCOMODO ECC Certification Authority,O\u003dCOMODO CA Limited,L\u003dSalford,ST\u003dGreater Manchester,C\u003dGB\",\"issuerLabel\":\"COMODO ECC Certification Authority\"" +
                          ",\"raw\":\"-----BEGIN CERTIFICATE-----\nMIIDnzCCAyWgAwIBAgIQWyXOaQfEJlVm0zkMmalUrTAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC\r\n" +
                          "R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE\r\nChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB\r\n" +
                          "dXRob3JpdHkwHhcNMTQwOTI1MDAwMDAwWhcNMjkwOTI0MjM1OTU5WjCBkjELMAkGA1UEBhMCR0Ix\r\nGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR\r\n" +
                          "Q09NT0RPIENBIExpbWl0ZWQxODA2BgNVBAMTL0NPTU9ETyBFQ0MgRG9tYWluIFZhbGlkYXRpb24g\r\nU2VjdXJlIFNlcnZlciBDQSAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAjgZgTrJaYRwWQKO\r\n" +
                          "qIofMN+83gP8eR06JSxrQSEYgur5PkrkM8wSzypD/A7yZADA4SVQgiTNtkk4DyVHkUikraOCAWYw\r\nggFiMB8GA1UdIwQYMBaAFHVxpxlIGbydnepBR9+UxEh3mdN5MB0GA1UdDgQWBBRACWFn8LyDcU/e\r\n" +
                          "Eggsb9TUK3Y9ljAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAU\r\nBggrBgEFBQcDAQYIKwYBBQUHAwIwGwYDVR0gBBQwEjAGBgRVHSAAMAgGBmeBDAECATBMBgNVHR8E\r\n" +
                          "RTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9FQ0NDZXJ0aWZpY2F0aW9u\r\nQXV0aG9yaXR5LmNybDByBggrBgEFBQcBAQRmMGQwOwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29t\r\n" +
                          "b2RvY2EuY29tL0NPTU9ET0VDQ0FkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2Nz\r\ncC5jb21vZG9jYTQuY29tMAoGCCqGSM49BAMDA2gAMGUCMQCsaEclgBNPE1bAojcJl1pQxOfttGHL\r\n" +
                          "KIoKETKm4nHfEQGJbwd6IGZrGNC5LkP3Um8CMBKFfI4TZpIEuppFCZRKMGHRSdxv6+ctyYnPHmp8\r\n7IXOMCVZuoFwNLg0f+cB0eLLUg\u003d\u003d\r\n-----END CERTIFICATE-----\n\"}," +
                          "{\"subject\":\"CN\u003dCOMODO ECC Certification Authority,O\u003dCOMODO CA Limited,L\u003dSalford,ST\u003dGreater Manchester,C\u003dGB\",\"label\":" +
                          "\"COMODO ECC Certification Authority\",\"issuerSubject\":\"CN\u003dAddTrust External CA Root,OU\u003dAddTrust External TTP Network,O\u003dAddTrust AB,C\u003dSE\"," +
                          "\"issuerLabel\":\"AddTrust External CA Root\",\"raw\":\"-----BEGIN CERTIFICATE-----\nMIID0DCCArigAwIBAgIQQ1ICP/qokB8Tn+P05cFETjANBgkqhkiG9w0BAQwFADBvMQswCQYDVQQG\r\n" +
                          "EwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRU\r\nUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEw\r\n" +
                          "NDgzOFoXDTIwMDUzMDEwNDgzOFowgYUxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1h\r\nbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMSsw\r\n" +
                          "KQYDVQQDEyJDT01PRE8gRUNDIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MHYwEAYHKoZIzj0CAQYF\r\nK4EEACIDYgAEA0d7L3XJghWF+3XkkRbUq2KZ9T5SCwbOQQB/l+EKJDwdAQTuPdKNCZcM4HXk+vt3\r\n" +
                          "iir1A2BLNosWIxatCXH0SvQoULT+iBxuP2wvLwlZW6VbCzOZ4sM9iflqLO+y0wbpo4H+MIH7MB8G\r\nA1UdIwQYMBaAFK29mHo0tCb3+sQmVO8DveAky1QaMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRI\r\n" +
                          "d5nTeTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zARBgNVHSAECjAIMAYGBFUdIAAw\r\nSQYDVR0fBEIwQDA+oDygOoY4aHR0cDovL2NybC50cnVzdC1wcm92aWRlci5jb20vQWRkVHJ1c3RF\r\n" +
                          "eHRlcm5hbENBUm9vdC5jcmwwOgYIKwYBBQUHAQEELjAsMCoGCCsGAQUFBzABhh5odHRwOi8vb2Nz\r\ncC50cnVzdC1wcm92aWRlci5jb20wDQYJKoZIhvcNAQEMBQADggEBAB3H+i5AtlwFSw+8VTYBWOBT\r\n" +
                          "BT1k+6zZpTi4pyE7r5VbvkjI00PUIWxB7QktnHMAcZyuIXN+/46NuY5YkI78jG12yAA6nyCmLX3M\r\nF/3NmJYyCRrJZfwE67SaCnjllztSjxLCdJcBns/hbWjYk7mcJPuWJ0gBnOqUP3CYQbNzUTcp6PYB\r\n" +
                          "erknuCRR2RFo1KaFpzanpZa6gPim/a5thCCuNXZzQg+HCezF3OeTAyIal+6ailFhp5cmHunudVEI\r\nkAWvL54TnJM/ev/m6+loeYyv4Lb67psSE/5FjNJ80zXrIRKT/mZ1JioVhCb3ZsnLjbsJQdQYr7Gz\r\n" +
                          "EPUQyp2aDrV1aug\u003d\r\n-----END CERTIFICATE-----\n\"}],\"issues\":0},\"protocols\":[{\"id\":769,\"name\":\"TLS\",\"version\":\"1.0\"},{\"id\":770,\"name\":\"TLS\"" +
                          ",\"version\":\"1.1\"},{\"id\":771,\"name\":\"TLS\",\"version\":    \"1.2\"}],\"suites\":{\"list\":[{\"id\":49195,\"name\":\"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\"" +
                          ",\"cipherStrength\":128,\"ecdhBits\":256,\"ecdhStrength\":3072},{\"id\":49187,\"name\":\"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256\",\"cipherStrength\":128," +
                          "\"ecdhBits\":256,\"ecdhStrength\":3072},{\"id\":49161,\"name\":\"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\"cipherStrength\":128,\"ecdhBits\":256,\"ecdhStrength\":3072}" +
                          ",{\"id\":49196,\"name\":\"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\"cipherStrength\":256,\"ecdhBits\":256,\"ecdhStrength\":3072},{\"id\":49188,\"name\":\"" +
                          "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384\",\"cipherStrength\":256,\"ecdhBits\":256,\"ecdhStrength\":3072},{\"id\":49162,\"name\":\"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\"" +
                          ",\"cipherStrength\":256,\"ecdhBits\":256,\"ecdhStrength\":3072},{\"id\":49160,\"name\":\"TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA\",\"cipherStrength\":168,\"ecdhBits\":256," +
                          "\"ecdhStrength\":3072}],\"preference\":true},\"serverSignature\":\"cloudflare-nginx\",\"prefixDelegation\":true,\"nonPrefixDelegation\":true,\"vulnBeast\":true,\"" +
                          "renegSupport\":2,\"sessionResumption\":1,\"compressionMethods\":0,\"supportsNpn\":true,\"npnProtocols\":\"spdy/3.1 http/1.1\",\"sessionTickets\":1,\"ocspStapling\":true" +
                          ",\"sniRequired\":true,\"httpStatusCode\":301,\"httpForwarding\":\"http://www.ashleypoole.co.uk\",\"supportsRc4\":false,\"forwardSecrecy\":2,\"rc4WithModern\":false,\"" +
                          "sims\":{\"results\":[{\"client\":{\"id\":56,\"name\":\"Android\",\"version\":\"2.3.7\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":47}" +
                          ",{\"client\":{\"id\":58,\"name\":\"Android\",\"version\":\"4.0.4\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":49161}," +
                          "{\"client\":{\"id\":59,\"name\":\"Android\",\"version\":\"4.1.1\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":49161}," +
                          "{\"client\":{\"id\":60,\"name\":\"Android\",\"version\":\"4.2.2\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":49161}," +
                          "{\"client\":{\"id\":61,\"name\":\"Android\",\"version\":\"4.3\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":49161}," +
                          "{\"client\":{\"id\":62,\"name\":\"Android\",\"version\":\"4.4.2\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49195}," +
                          "{\"client\":{\"id\":88,\"name\":\"Android\",\"version\":\"5.0.0\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49195}," +
                          "{\"client\":{\"id\":94,\"name\":\"Baidu\",\"version\":\"Jan 2015\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":49161}," +
                          "{\"client\":{\"id\":91,\"name\":\"BingPreview\",\"version\":\"Jan 2015\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49195}," +
                          "{\"client\":{\"id\":89,\"name\":\"Chrome\",\"platform\":\"OS X\",\"version\":\"40\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49195}," +
                          "{\"client\":{\"id\":84,\"name\":\"Firefox\",\"platform\":\"Win 7\",\"version\":\"31.3.0 ESR\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"" +
                          "suiteId\":49195},{\"client\":{\"id\":90,\"name\":\"Firefox\",\"platform\":\"OS X\",\"version\":\"35\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":771" +
                          ",\"suiteId\":49195},{\"client\":{\"id\":72,\"name\":\"Googlebot\",\"version\":\"Jun 2014\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"" +
                          "suiteId\":49161},{\"client\":{\"id\":18,\"name\":\"IE\",\"platform\":\"XP\",\"version\":\"6\",\"isReference\":false},\"errorCode\":1,\"attempts\":1},{\"client\":" +
                          "{\"id\":19,\"name\":\"IE\",\"platform\":\"Vista\",\"version\":\"7\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":49161}," +
                          "{\"client\":{\"id\":20,\"name\":\"IE\",\"platform\":\"XP\",\"version\":\"8\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":10}," +
                          "{\"client\":{\"id\":23,\"name\":\"IE\",\"platform\":\"Win 7\",\"version\":\"8-10\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":49161}" +
                          ",{\"client\":{\"id\":95,\"name\":\"IE\",\"platform\":\"Win 7\",\"version\":\"11\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49195}" +
                          ",{\"client\":{\"id\":96,\"name\":\"IE\",\"platform\":\"Win 8.1\",\"version\":\"11\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49195}" +
                          ",{\"client\":{\"id\":64,\"name\":\"IE Mobile\",\"platform\":\"Win Phone 8.0\",\"version\":\"10\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"" +
                          "suiteId\":49161},{\"client\":{\"id\":65,\"name\":\"IE Mobile\",\"platform\":\"Win Phone 8.1\",\"version\":\"11\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"" +
                          "protocolId\":771,\"suiteId\":49195},{\"client\":{\"id\":25,\"name\":\"Java\",\"version\":\"6u45\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"" +
                          "suiteId\":47},{\"client\":{\"id\":26,\"name\":\"Java\",\"version\":\"7u25\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":49161}," +
                          "{\"client\":{\"id\":86,\"name\":\"Java\",\"version\":\"8u31\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49195},{\"client\":" +
                          "{\"id\":27,\"name\":\"OpenSSL\",\"version\":\"0.9.8y\",\"isReference\":false},\"errorCode\":1,\"attempts\":1},{\"client\":{\"id\":28,\"name\":\"OpenSSL\",\"version\":\"1.0.1h\"" +
                          ",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49195},{\"client\":{\"id\":32,\"name\":\"Safari\",\"platform\":\"OS X 10.6.8\",\"" +
                          "version\":\"5.1.9\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":49161},{\"client\":{\"id\":33,\"name\":\"Safari\",\"platform\":" +
                          "\"iOS 6.0.1\",\"version\":\"6\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49187},{\"client\":{\"id\":63,\"name\":\"Safari\",\"" +
                          "platform\":\"iOS 7.1\",\"version\":\"7\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49187},{\"client\":{\"id\":85,\"name\":\"" +
                          "Safari\",\"platform\":\"iOS 8.1.2\",\"version\":\"8\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49187},{\"client\":{\"id\":34," +
                          "\"name\":\"Safari\",\"platform\":\"OS X 10.8.4\",\"version\":\"6.0.4\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":769,\"suiteId\":49161},{\"client" +
                          "\":{\"id\":35,\"name\":\"Safari\",\"platform\":\"OS X 10.9\",\"version\":\"7\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49187}," +
                          "{\"client\":{\"id\":87,\"name\":\"Safari\",\"platform\":\"OS X 10.10\",\"version\":\"8\",\"isReference\":true},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"" +
                          "suiteId\":49187},{\"client\":{\"id\":92,\"name\":\"Yahoo Slurp\",\"version\":\"Jan 2015\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId" +
                          "\":49195},{\"client\":{\"id\":93,\"name\":\"YandexBot\",\"version\":\"Jan 2015\",\"isReference\":false},\"errorCode\":0,\"attempts\":1,\"protocolId\":771,\"suiteId\":49195}]}" +
                          ",\"heartbleed\":false,\"heartbeat\":false,\"openSslCcs\":1,\"poodleTls\":1}}",
                StatusCode        = 200,
                StatusDescription = "Ok",
                Url = ("https://api.ssllabs.com/api/v2/getEndpoint?host=" + TestHost + "%s=" + TestIP)
            };

            mockedApiProvider.Setup(x => x.MakeGetRequest(It.IsAny <RequestModel>())).Returns(webResponseModel);

            var ssllService = new SSLLabsApiService("https://api.ssllabs.com/api/v2/", mockedApiProvider.Object);

            Response = ssllService.GetEndpointData(TestHost, TestIP);
        }