Example #1
0
    def verify(self, base_url):
        '''Parses the given HTML string and asks the 
        FortuneHTMLParser whether the parsed string is a 
        valid fortune response
        '''

        url = base_url + self.fortune_url
        headers, body = self.request_headers_and_body(url)

        _, problems = basic_body_verification(body, url, is_json_check=False)

        if len(problems) > 0:
            return problems

        parser = FortuneHTMLParser()
        parser.feed(body)
        (valid, diff) = parser.isValidFortune(self.out)

        if valid:
            problems += verify_headers(headers, url, should_be='html')

            if len(problems) == 0:
                return [('pass', '', url)]
            else:
                return problems
        else:
            failures = []
            failures.append(
                ('fail', 'Invalid according to FortuneHTMLParser', url))
            failures += self._parseDiffForFailure(diff, failures, url)
            return failures
    def verify(self, base_url):
        '''Parses the given HTML string and asks the 
    FortuneHTMLParser whether the parsed string is a 
    valid fortune response
    '''
        url = base_url + self.fortune_url
        full_response = self._curl(url)
        body = self._curl_body(url)

        # Empty response
        if body is None:
            return [('fail', 'No response', url)]
        elif len(body) == 0:
            return [('fail', 'Empty Response', url)]

        parser = FortuneHTMLParser()
        parser.feed(body)
        (valid, diff) = parser.isValidFortune(self.out)
        if valid:
            # Ensure required response headers are present
            if any(v.lower() not in full_response.lower() for v in ('Server','Date','Content-Type: text/html')) \
               or all(v.lower() not in full_response.lower() for v in ('Content-Length','Transfer-Encoding')):
                return [('warn', 'Required response header missing.', url)]

            return [('pass', '', url)]
        else:
            failures = [('fail', 'Invalid according to FortuneHTMLParser', url)
                        ]
            # Catch exceptions because we are relying on internal code
            try:
                # Parsing this:
                # --- Valid
                # +++ Response
                # @@ -1 +1 @@
                #
                # -<!doctype html><html><head><title>Fortunes</title></head><body><table>
                # +<!doctype html><html><head><meta></meta><title>Fortunes</title></head><body><div><table>
                # @@ -16 +16 @@

                current_neg = []
                current_pos = []
                for line in diff[3:]:
                    if line[0] == '+':
                        current_neg.append(line[1:])
                    elif line[0] == '-':
                        current_pos.append(line[1:])
                    elif line[0] == '@':
                        failures.append(
                            ('fail', "`%s` should be `%s`" %
                             (''.join(current_neg), ''.join(current_pos)),
                             url))
                if len(current_pos) != 0:
                    failures.append(
                        ('fail', "`%s` should be `%s`" %
                         (''.join(current_neg), ''.join(current_pos)), url))
            except:
                pass
            return failures
  def validateFortune(self, htmlString, out, err):
    try:
      parser = FortuneHTMLParser()
      parser.feed(htmlString)

      return parser.isValidFortune()
    except:
      pass
    return False
    def validateFortune(self, htmlString, out, err):
        try:
            parser = FortuneHTMLParser()
            parser.feed(htmlString)

            return parser.isValidFortune()
        except:
            pass
        return False
  def verify(self, base_url):
    '''Parses the given HTML string and asks the 
    FortuneHTMLParser whether the parsed string is a 
    valid fortune response
    '''
    url = base_url + self.fortune_url
    full_response = self._curl(url)
    body = self._curl_body(url)
    
    # Empty response
    if body is None:
      return [('fail','No response', url)]
    elif len(body) == 0:
      return [('fail','Empty Response', url)]

    parser = FortuneHTMLParser()
    parser.feed(body)
    (valid, diff) = parser.isValidFortune(self.out)
    if valid:
      # Ensure required response headers are present
      if any(v.lower() not in full_response.lower() for v in ('Server','Date','Content-Type: text/html')) \
         or all(v.lower() not in full_response.lower() for v in ('Content-Length','Transfer-Encoding')):
        return[('warn','Required response header missing.',url)]

      return [('pass','',url)]
    else:
      failures = [('fail','Invalid according to FortuneHTMLParser',url)]
      # Catch exceptions because we are relying on internal code
      try:
        # Parsing this: 
        # --- Valid
        # +++ Response
        # @@ -1 +1 @@
        #
        # -<!doctype html><html><head><title>Fortunes</title></head><body><table>
        # +<!doctype html><html><head><meta></meta><title>Fortunes</title></head><body><div><table>
        # @@ -16 +16 @@
        
        current_neg = []
        current_pos = []
        for line in diff[3:]:
          if line[0] == '+':
            current_neg.append(line[1:])
          elif line[0] == '-':
            current_pos.append(line[1:])
          elif line[0] == '@':
            failures.append( ('fail', 
              "`%s` should be `%s`" % (''.join(current_neg), ''.join(current_pos)),
              url) )
        if len(current_pos) != 0:
          failures.append( ('fail', 
              "`%s` should be `%s`" % (''.join(current_neg), ''.join(current_pos)),
              url) )
      except: 
        pass
      return failures 
Example #6
0
  def validateFortune(self, htmlString, out, err):
    err_str = ""
    try:
      parser = FortuneHTMLParser()
      parser.feed(htmlString)

      return parser.isValidFortune(out)
    except:
      print "Got exception when trying to validate the fortune test: {exception} ".format(exception=sys.exc_info()[0:2])
    return False
    def verify(self, base_url):
        '''Parses the given HTML string and asks the 
    FortuneHTMLParser whether the parsed string is a 
    valid fortune response
    '''
        url = base_url + self.fortune_url
        body = self._curl(url)

        # Empty response
        if body is None:
            return [('fail', 'No response', url)]
        elif len(body) == 0:
            return [('fail', 'Empty Response', url)]

        parser = FortuneHTMLParser()
        parser.feed(body)
        (valid, diff) = parser.isValidFortune(self.out)
        if valid:
            return [('pass', '', url)]
        else:
            failures = [('fail', 'Invalid according to FortuneHTMLParser', url)
                        ]
            # Catch exceptions because we are relying on internal code
            try:
                # Parsing this:
                # --- Valid
                # +++ Response
                # @@ -1 +1 @@
                #
                # -<!doctype html><html><head><title>Fortunes</title></head><body><table>
                # +<!doctype html><html><head><meta></meta><title>Fortunes</title></head><body><div><table>
                # @@ -16 +16 @@

                current_neg = []
                current_pos = []
                for line in diff[3:]:
                    if line[0] == '+':
                        current_neg.append(line[1:])
                    elif line[0] == '-':
                        current_pos.append(line[1:])
                    elif line[0] == '@':
                        failures.append(
                            ('fail', "`%s` should be `%s`" %
                             (''.join(current_neg), ''.join(current_pos)),
                             url))
                if len(current_pos) != 0:
                    failures.append(
                        ('fail', "`%s` should be `%s`" %
                         (''.join(current_neg), ''.join(current_pos)), url))
            except:
                pass
            return failures
  def validateFortune(self, htmlString, out, err):
    try:
      parser = FortuneHTMLParser()
      parser.feed(htmlString)

      return parser.isValidFortune()
    except:
      err.write(textwrap.dedent("""
          -----------------------------------------------------
            Error: validateFortune raised exception
          -----------------------------------------------------
          {trace}
          """.format( trace=sys.exc_info()[:2])))
    return False
Example #9
0
    def validateFortune(self, htmlString, out, err):
        try:
            parser = FortuneHTMLParser()
            parser.feed(htmlString)

            return parser.isValidFortune()
        except:
            err.write(
                textwrap.dedent("""
          -----------------------------------------------------
            Error: validateFortune raised exception
          -----------------------------------------------------
          {trace}
          """.format(trace=sys.exc_info()[:2])))
        return False
    def verify(self, base_url):
        """Parses the given HTML string and asks the 
    FortuneHTMLParser whether the parsed string is a 
    valid fortune response
    """
        url = base_url + self.fortune_url
        body = self._curl(url)

        # Empty response
        if body is None:
            return [("fail", "No response", url)]
        elif len(body) == 0:
            return [("fail", "Empty Response", url)]

        parser = FortuneHTMLParser()
        parser.feed(body)
        (valid, diff) = parser.isValidFortune(self.out)
        if valid:
            return [("pass", "", url)]
        else:
            failures = [("fail", "Invalid according to FortuneHTMLParser", url)]
            # Catch exceptions because we are relying on internal code
            try:
                # Parsing this:
                # --- Valid
                # +++ Response
                # @@ -1 +1 @@
                #
                # -<!doctype html><html><head><title>Fortunes</title></head><body><table>
                # +<!doctype html><html><head><meta></meta><title>Fortunes</title></head><body><div><table>
                # @@ -16 +16 @@

                current_neg = []
                current_pos = []
                for line in diff[3:]:
                    if line[0] == "+":
                        current_neg.append(line[1:])
                    elif line[0] == "-":
                        current_pos.append(line[1:])
                    elif line[0] == "@":
                        failures.append(
                            ("fail", "`%s` should be `%s`" % ("".join(current_neg), "".join(current_pos)), url)
                        )
                if len(current_pos) != 0:
                    failures.append(("fail", "`%s` should be `%s`" % ("".join(current_neg), "".join(current_pos)), url))
            except:
                pass
            return failures
  def verify(self, base_url):
    '''Parses the given HTML string and asks the 
    FortuneHTMLParser whether the parsed string is a 
    valid fortune response
    '''
    url = base_url + self.fortune_url
    body = self._curl(url)
    
    # Empty response
    if body is None:
      return [('fail','No response', url)]
    elif len(body) == 0:
      return [('fail','Empty Response', url)]

    parser = FortuneHTMLParser()
    parser.feed(body)
    if parser.isValidFortune(self.out):
      return [('pass','',url)]
    else:
      return [('fail','Invalid according to FortuneHTMLParser',url)]
    def verify(self, base_url):
        '''Parses the given HTML string and asks the 
    FortuneHTMLParser whether the parsed string is a 
    valid fortune response
    '''
        url = base_url + self.fortune_url
        body = self._curl(url)

        # Empty response
        if body is None:
            return [('fail', 'No response', url)]
        elif len(body) == 0:
            return [('fail', 'Empty Response', url)]

        parser = FortuneHTMLParser()
        parser.feed(body)
        if parser.isValidFortune(self.out):
            return [('pass', '', url)]
        else:
            return [('fail', 'Invalid according to FortuneHTMLParser', url)]