public Wrapper PopulateWrapper(Wrapper wrapper, WebResponseModel webResponse) { wrapper.ApiCommandUrl = webResponse.Url; wrapper.ApiRawResponse = webResponse.Payloay; return(wrapper); }
public Header PopulateHeader(Header header, WebResponseModel webResponse) { header.statusCode = webResponse.StatusCode; header.statusDescription = webResponse.StatusDescription; return(header); }
/// <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); } }
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); }
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); }
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); }
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); }
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); }
/// <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; } }
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); }
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(); }
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(); }
/// <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); }
/// <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; } }
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); }
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); }
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); }
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(); }
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; } }
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); }
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); }
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); }