Example #1
0
    def setUp(self):
        builder = TreeBuilder()
        builder.start = MagicMock()
        builder.data = MagicMock()
        builder.end = MagicMock()

        self.builder = builder
Example #2
0
    def setUp(self):
        builder = TreeBuilder()
        builder.start = MagicMock()
        builder.data = MagicMock()
        builder.end = MagicMock()

        self.builder = builder
Example #3
0
class TreeBuilderRegexTestCase(TestCase):
    """ """

    def setUp(self):
        self.builder = TreeBuilder()
        self.builder._feedmatch = MagicMock()
        self.regex = self.builder.regex

    def tearDown(self):
        del self.regex
        del self.builder

    def _parsetag(self, markup):
        """ Call regex.match() on input string; return match groups """
        m = self.regex.match(markup)
        self.assertIsNotNone(m)
        groupdict = m.groupdict()
        self.assertEqual(len(groupdict), 4)
        return (groupdict["tag"], groupdict["text"], groupdict["closetag"])

    def test_sgml_tag(self):
        markup = "<TAG>data"
        parsed = self._parsetag(markup)
        self.assertEqual(parsed, ("TAG", "data", None))

    def test_sgml_endtag(self):
        markup = "</TAG>data"
        parsed = self._parsetag(markup)
        self.assertEqual(parsed, ("/TAG", "data", None))

    def test_xml_tag(self):
        markup = "<TAG>data</TAG>"
        parsed = self._parsetag(markup)
        self.assertEqual(parsed, ("TAG", "data", "TAG"))

    def test_xml_mismatched_endtag(self):
        markup = "<TAG>data</GAT>"
        parsed = self._parsetag(markup)
        self.assertEqual(parsed, ("TAG", "data", None))

    def test_xml_selfclosing_tag(self):
        markup = "<TAG />"
        parsed = self._parsetag(markup)
        self.assertEqual(parsed, ("TAG /", None, None))

    def test_finditer_sgml(self):
        markup = "<TAG1><TAG2>value"
        self.builder.feed(markup)
        expected = [call("TAG1", None, None), call("TAG2", "value", None)]
        self.assertEqual(self.builder._feedmatch.mock_calls, expected)

    def test_finditer_xml(self):
        markup = "<TAG1><TAG2>value</TAG2></TAG1>"
        self.builder.feed(markup)
        expected = [
            call("TAG1", None, None),
            call("TAG2", "value", "TAG2"),
            call("/TAG1", None, None),
        ]
        self.assertEqual(self.builder._feedmatch.mock_calls, expected)
Example #4
0
class TreeBuilderRegexTestCase(TestCase):
    """ """
    def setUp(self):
        self.builder = TreeBuilder()
        self.builder._feedmatch = MagicMock()
        self.regex = self.builder.regex

    def tearDown(self):
        del self.regex
        del self.builder

    def _parsetag(self, markup):
        """Call regex.match() on input string; return match groups"""
        m = self.regex.match(markup)
        self.assertIsNotNone(m)
        groupdict = m.groupdict()
        self.assertEqual(len(groupdict), 4)
        return (groupdict["tag"], groupdict["text"], groupdict["closetag"])

    def test_sgml_tag(self):
        markup = "<TAG>data"
        parsed = self._parsetag(markup)
        self.assertEqual(parsed, ("TAG", "data", None))

    def test_sgml_endtag(self):
        markup = "</TAG>data"
        parsed = self._parsetag(markup)
        self.assertEqual(parsed, ("/TAG", "data", None))

    def test_xml_tag(self):
        markup = "<TAG>data</TAG>"
        parsed = self._parsetag(markup)
        self.assertEqual(parsed, ("TAG", "data", "TAG"))

    def test_xml_mismatched_endtag(self):
        markup = "<TAG>data</GAT>"
        parsed = self._parsetag(markup)
        self.assertEqual(parsed, ("TAG", "data", None))

    def test_xml_selfclosing_tag(self):
        markup = "<TAG />"
        parsed = self._parsetag(markup)
        self.assertEqual(parsed, ("TAG /", None, None))

    def test_finditer_sgml(self):
        markup = "<TAG1><TAG2>value"
        self.builder.feed(markup)
        expected = [call("TAG1", None, None), call("TAG2", "value", None)]
        self.assertEqual(self.builder._feedmatch.mock_calls, expected)

    def test_finditer_xml(self):
        markup = "<TAG1><TAG2>value</TAG2></TAG1>"
        self.builder.feed(markup)
        expected = [
            call("TAG1", None, None),
            call("TAG2", "value", "TAG2"),
            call("/TAG1", None, None),
        ]
        self.assertEqual(self.builder._feedmatch.mock_calls, expected)
Example #5
0
    def parse(self, source):
        if not hasattr(source, 'read'):
            source = open(source)
        with source as s:
            source = s.read()
            if hasattr(source, 'decode'):
                source = source.decode()

        # Validate and strip the OFX header
        source = OFXHeader.strip(source)

        # Then parse tag soup into tree of Elements
        parser = TreeBuilder(element_factory=self.element_factory)
        parser.feed(source)
        self._root = parser.close()
Example #6
0
    def _testFeedSonrs(self, body):
        """
        str -> Element tests reused to test responses with identical content
        but different formatting.
        """
        builder = TreeBuilder()
        builder.feed(body)
        root = builder.close()

        self._testElement(root, tag="OFX", text=None, length=1)

        msgsrs = root[0]
        self._testElement(msgsrs, tag="SIGNONMSGSRSV1", text=None, length=1)

        sonrs = msgsrs[0]
        self._testElement(sonrs, tag="SONRS", text=None, length=6)

        status, dtserver, language, dtprofup, dtacctup, fi = sonrs

        self._testElement(status, tag="STATUS", text=None, length=2)

        code, severity = status

        self._testElement(code, tag="CODE", text="0", length=0)
        self._testElement(severity, tag="SEVERITY", text="INFO", length=0)

        self._testElement(dtserver,
                          tag="DTSERVER",
                          text="20051029101003",
                          length=0)
        self._testElement(language, tag="LANGUAGE", text="ENG", length=0)
        self._testElement(dtprofup,
                          tag="DTPROFUP",
                          text="19991029101003",
                          length=0)
        self._testElement(dtacctup,
                          tag="DTACCTUP",
                          text="20031029101003",
                          length=0)
        self._testElement(fi, tag="FI", text=None, length=2)

        org, fid = fi

        self._testElement(org, tag="ORG", text="NCH", length=0)
        self._testElement(fid, tag="FID", text="1001", length=0)
Example #7
0
    def _testFeedSonrs(self, body):
        """
        str -> Element tests reused to test responses with identical content
        but different formatting.
        """
        builder = TreeBuilder()
        builder.feed(body)
        root = builder.close()

        self._testElement(root, tag="OFX", text=None, length=1)

        msgsrs = root[0]
        self._testElement(msgsrs, tag="SIGNONMSGSRSV1", text=None, length=1)

        sonrs = msgsrs[0]
        self._testElement(sonrs, tag="SONRS", text=None, length=6)

        status, dtserver, language, dtprofup, dtacctup, fi = sonrs

        self._testElement(status, tag="STATUS", text=None, length=2)

        code, severity = status

        self._testElement(code, tag="CODE", text="0", length=0)
        self._testElement(severity, tag="SEVERITY", text="INFO", length=0)

        self._testElement(dtserver, tag="DTSERVER", text="20051029101003", length=0)
        self._testElement(language, tag="LANGUAGE", text="ENG", length=0)
        self._testElement(dtprofup, tag="DTPROFUP", text="19991029101003", length=0)
        self._testElement(dtacctup, tag="DTACCTUP", text="20031029101003", length=0)
        self._testElement(fi, tag="FI", text=None, length=2)

        org, fid = fi

        self._testElement(org, tag="ORG", text="NCH", length=0)
        self._testElement(fid, tag="FID", text="1001", length=0)
Example #8
0
 def setUpClass(cls):
     cls.tree = OFXTree()
     parser = TreeBuilder()
     parser.feed(cls.ofx)
     cls.tree._root = parser.close()
Example #9
0
 def setUpClass(cls):
     cls.tree = OFXTree()
     parser = TreeBuilder()
     parser.feed(cls.ofx)
     cls.tree._root = parser.close()
Example #10
0
 def setUp(self):
     self.builder = TreeBuilder()
     self.builder._feedmatch = MagicMock()
     self.regex = self.builder.regex
Example #11
0
 def setUp(self):
     self.builder = TreeBuilder()
     self.builder._feedmatch = MagicMock()
     self.regex = self.builder.regex