Ejemplo n.º 1
0
 def request(self, method, url_resource, use_api_key=True, **kwargs):
     # type: (Callable, Text, bool, **Any) -> Response
     if url_resource is not None:
         # makes URL relative
         url_resource = url_resource.lstrip("/")
     url_resource = urljoin(self.server_url, url_resource)
     params = {}
     if use_api_key:
         params["apiKey"] = self.api_key
     params.update(kwargs.get("params", {}))
     headers = kwargs.get("headers", self.headers).copy()
     timeout_sec = kwargs.get("timeout", None)
     if timeout_sec is None:
         timeout_sec = datetime_utils.to_sec(self.timeout_ms)
     response = method(
         url_resource,
         data=kwargs.get("data", None),
         verify=False,
         params=params,
         headers=headers,
         timeout=timeout_sec,
     )
     try:
         response.raise_for_status()
     except requests.HTTPError as e:
         logger.exception(e)
     return response
Ejemplo n.º 2
0
def create_dom_snapshot(
    driver,
    dont_fetch_resources,
    skip_resources,
    timeout_ms,
    cross_origin_rendering,
):
    # type: (EyesWebDriver, bool, List[Text], int, bool) -> Dict
    is_ie = driver.user_agent.is_internet_explorer
    script_type = DomSnapshotScriptForIE if is_ie else DomSnapshotScriptGeneric
    script = script_type(driver)
    is_ios = "ios" in driver.desired_capabilities.get("platformName",
                                                      "").lower()
    chunk_byte_length = MAX_CHUNK_BYTES_IOS if is_ios else MAX_CHUNK_BYTES_GENERIC
    deadline = time() + datetime_utils.to_sec(timeout_ms)
    return create_cross_frames_dom_snapshots(
        driver.switch_to,
        script,
        deadline,
        SCRIPT_POLL_INTERVAL_MS,
        chunk_byte_length,
        cross_origin_rendering,
        dont_fetch_resources=dont_fetch_resources,
        skip_resources=skip_resources,
        serialize_resources=True,
    )
Ejemplo n.º 3
0
    def _upload_data(
        self, data_bytes, rendering_info, target_url, content_type, media_type
    ):
        # type: (bytes, RenderingInfo, Text, Text, Text) -> bool
        headers = ServerConnector.DEFAULT_HEADERS.copy()
        headers["Content-Type"] = content_type
        headers["Content-Length"] = str(len(data_bytes))
        headers["Media-Type"] = media_type
        headers["X-Auth-Token"] = rendering_info.access_token
        headers["x-ms-blob-type"] = "BlockBlob"

        timeout_sec = datetime_utils.to_sec(self._com.timeout_ms)
        response = self.client_session.request(
            "put",
            target_url,
            data=data_bytes,
            headers=headers,
            timeout=timeout_sec,
            verify=False,
        )
        if response.status_code in [requests.codes.ok, requests.codes.created]:
            logger.debug("Upload Status Code: {}".format(response.status_code))
            return True
        raise EyesError(
            "Failed to Upload. Status Code: {}".format(response.status_code)
        )
Ejemplo n.º 4
0
 def request(
     self, method, url_resource, use_api_key=True, request_id=None, **kwargs
 ):
     # type: (Text, Text, bool, Optional[UUID], **Any) -> Response
     req_id = str(uuid.uuid4() if request_id is None else request_id)
     if url_resource is not None:
         # makes URL relative
         url_resource = url_resource.lstrip("/")
     url_resource = urljoin(self.server_url.rstrip("/"), url_resource)
     params = {}
     if use_api_key:
         params["apiKey"] = self.api_key
     params.update(kwargs.get("params", {}))
     headers = self.headers.copy()
     headers.update(kwargs.get("headers", {}))
     headers["x-applitools-eyes-client-request-id"] = req_id
     timeout_sec = kwargs.get("timeout", None)
     if timeout_sec is None:
         timeout_sec = datetime_utils.to_sec(self.timeout_ms)
     response = self.client_session.request(
         method,
         url_resource,
         data=kwargs.get("data", None),
         verify=False,
         params=params,
         headers=headers,
         timeout=timeout_sec,
     )
     try:
         response.raise_for_status()
     except requests.HTTPError as e:
         logger.exception(e)
         logger.error("Error response content is: {}".format(response.text))
     return response
Ejemplo n.º 5
0
    def start_timer():
        def set_timer():
            is_check_timer_timeout.append(True)

        timer = threading.Timer(datetime_utils.to_sec(dom_extraction_timeout),
                                set_timer)
        timer.daemon = True
        timer.setName(timer_name)
        timer.start()
        return timer
Ejemplo n.º 6
0
    def download_resource(self, url):
        # type: (Text) -> Response
        logger.debug("Fetching {}...".format(url))
        headers = ServerConnector.DEFAULT_HEADERS.copy()
        headers["Accept-Encoding"] = "identity"

        timeout_sec = datetime_utils.to_sec(self._com.timeout_ms)
        response = requests.get(url, headers=headers, timeout=timeout_sec, verify=False)
        if response.status_code == requests.codes.not_acceptable:
            response = requests.get(url, timeout=timeout_sec, verify=False)
        return response
 def download_resource(self, url):
     # type: (Text) -> Response
     headers = {
         "Accept-Encoding": "identity",
         "Accept-Language": "*",
     }
     if self._ua_string:
         headers["User-Agent"] = self._ua_string
     logger.debug("Fetching URL {}\nwith headers {}".format(url, headers))
     timeout_sec = datetime_utils.to_sec(self._com.timeout_ms)
     response = requests.get(url, headers=headers, timeout=timeout_sec, verify=False)
     if response.status_code == requests.codes.not_acceptable:
         response = requests.get(url, timeout=timeout_sec, verify=False)
     return response
Ejemplo n.º 8
0
 def download_resource(self, url, cookies):
     # type: (Text, Dict) -> Response
     headers = {
         "Accept-Encoding": "identity",
         "Accept-Language": "*",
     }
     cookies = {c["name"]: c["value"] for c in cookies}
     if self._ua_string:
         headers["User-Agent"] = self._ua_string
     logger.debug("Fetching URL {}\nwith headers {}".format(url, headers))
     timeout_sec = datetime_utils.to_sec(self._com.timeout_ms)
     try:
         return self._try_download_resources(headers, timeout_sec, url, cookies)
     except (requests.HTTPError, requests.ConnectionError) as e:
         logger.warning("Failed to download resource", url=url, exc=e)
         response = Response()
         response._content = b""
         response.status_code = requests.codes.no_response
         return response
Ejemplo n.º 9
0
 def __init__(
         self,
         driver,  # type: EyesWebDriver
         script,  # type: DomSnapshotScript
         logger,  # type: BoundLogger
         timeout_ms,  # type: int
         chunk_byte_length,  # type: int
         cross_origin_rendering,  # type: bool
         use_cookies,  # type: bool
         **script_args  # type: Any
 ):
     self.should_skip_failed_frames = False
     self._driver = driver
     self._script = script
     self._logger = logger
     self._deadline_time = time() + datetime_utils.to_sec(timeout_ms)
     self._chunk_byte_length = chunk_byte_length
     self._cross_origin_rendering = cross_origin_rendering
     self._use_cookies = use_cookies
     self._script_args = script_args
def test_request_with_changed_values(configured_connector):
    new_timeout = 99999
    new_timeout_sec = to_sec(new_timeout)
    new_api_key = "NEW API KEY"
    new_server_url = "http://new-server.com/"
    conf = Configuration(timeout=new_timeout,
                         api_key=new_api_key,
                         server_url=new_server_url)
    configured_connector.update_config(conf, "eyes.test")

    with patch("applitools.core.server_connector.ClientSession.request"
               ) as mocked_request:
        with patch(
                "applitools.core.server_connector.json_utils.attr_from_response",
                return_value=RUNNING_SESSION_OBJ,
        ):
            configured_connector.start_session(SESSION_START_INFO_OBJ)

    assert mocked_request.call_args[1]["timeout"] == new_timeout_sec
    assert mocked_request.call_args[1]["params"]["apiKey"] == new_api_key
    assert new_server_url in mocked_request.call_args[0][1]