Esempio n. 1
0
 def test_mocked_response_duckduckgo(self):
     """Let's pretend that duckduckgo.com's frontpage 404s"""
     # Arrange
     url = "duckduckgo.com/html"
     mock = MockResponse()
     mock.http_code = 404
     self.backend.responses.add(mock, url)
     # Act, Assert
     self.assertEqual(self.browser.go(url), 404)
Esempio n. 2
0
 def test_string_data(self):
     """Data passed as a string should be compared one-to-one"""
     mock = MockResponse()
     mock.http_code = 200
     url = "mock"
     method = "POST"
     data = "abc123"
     self.backend.responses.add(mock=mock, url=url, method=method, data=data)
     self.assertEqual(self.browser.go(url=url, method=method, data=data), 200)
Esempio n. 3
0
 def test_mocked_exception_duckduckgo(self):
     """What if curl raises an exception?"""
     # Arrange
     url = "duckduckgo.com/html"
     mock = MockResponse()
     mock.exception = pycurl.error()
     self.backend.responses.add(mock, url)
     # Act, Assert
     self.assertRaises(pycurl.error, self.browser.go, url)
Esempio n. 4
0
 def test_mocked_content_duckduckgo(self):
     """Let's pretend that duckduckgo.com's frontpage has a silly message"""
     # Arrange
     url = "duckduckgo.com/html"
     mock = MockResponse()
     mock.src = "Try Google"
     self.backend.responses.add(mock, url)
     # Act
     self.browser.go(url)
     # Assert
     self.assertEqual(self.browser.src, mock.src)
Esempio n. 5
0
 def test_mocked_roundtrip_duckduckgo(self):
     """Let's pretend that duckduckgo.com's really slow"""
     # Arrange
     url = "duckduckgo.com/html"
     mock = MockResponse()
     mock.roundtrip = timedelta(5)
     self.backend.responses.add(mock, url)
     # Act
     self.browser.go(url)
     # Assert
     self.assertEqual(self.browser.roundtrip, mock.roundtrip)
Esempio n. 6
0
 def test_header_passed(self):
     """Pass a header and make sure the correct data comes back"""
     right = MockResponse()
     wrong = MockResponse()
     right.src = "right"
     wrong.src = "wrong"
     headers_for_right = dict(a=1, b=2)
     url = "header"
     self.backend.responses.add(right, url, headers=headers_for_right)
     self.backend.responses.add(wrong, url)
     self.browser.go(url=url, headers=headers_for_right)
     self.assertEqual(self.browser.src, right.src)
 def test_no_action(self):
     """When no action is specified in a form the URL should be replicated"""
     url = 'form'
     form = MockResponse()
     form.src = """
         <form method="post">
             <input type="submit" />
         </form>
     """
     self.backend.responses.add(form, url)
     self.backend.responses.add(form, url, 'POST', dict())
     self.browser.go(url)
     self.browser.form_select(0)
     self.browser.form_submit()
Esempio n. 8
0
    def test_mocked_code_verbs(self):
        """Different mocked response codes for different verbs"""
        # Arrange
        url = "duckduckgo.com/html"

        mock_post = MockResponse()
        mock_post.http_code = 1
        self.backend.responses.add(mock_post, url, "POST")

        mock_get = MockResponse()
        mock_get.http_code = 2
        self.backend.responses.add(mock_get, url, "GET")

        mock_put = MockResponse()
        mock_put.http_code = 3
        self.backend.responses.add(mock_put, url, "PUT")

        mock_delete = MockResponse()
        mock_delete.http_code = 4
        self.backend.responses.add(mock_delete, url, "DELETE")

        # Act, Assert
        self.assertEqual(self.browser.go(url, "POST"), 1)
        self.assertEqual(self.browser.go(url, "GET"), 2)
        self.assertEqual(self.browser.go(url, "PUT"), 3)
        self.assertEqual(self.browser.go(url, "DELETE"), 4)
 def test_no_method(self):
     """When no method is specified in a form the default should be GET"""
     form = MockResponse()
     form.src = """
         <form>
             <input type="hidden" name="name" value="value" />
             <input type="submit" />
         </form>
     """
     self.backend.responses.add(form, 'form')
     self.backend.responses.add(form, 'form?name=value', 'GET')
     self.browser.go('form')
     self.browser.form_select(0)
     self.browser.form_submit()
Esempio n. 10
0
    def test_returned_headers(self):
        """Set some headers in the mock and check they are passed back"""
        # Arrange
        mock = MockResponse()
        mock.headers = dict(a=1, b=2)

        url = ""

        self.backend.responses.add(mock, url)

        # Act
        self.browser.go(url)

        # Assert
        self.assertEqual(self.browser.headers, mock.headers)
Esempio n. 11
0
    def test_post(self):
        """Positive test for POST"""
        # Arrange
        mock = MockResponse()
        mock.http_code = 200
        mock.src = 'success'

        url = '%s/object' % self.client.base
        method = 'POST'
        data = urlencode(dict(a=1, b=2, c=3))

        self.backend.responses.add(mock, url, method, data)

        # Act, Assert
        self.assertEqual(self.client.post('object', data), mock.src)
Esempio n. 12
0
    def test_head(self):
        """Positive test for HEAD"""
        # Arrange
        mock = MockResponse()
        mock.http_code = 200
        mock.src = 'failure'

        uid = 1
        url = '%s/object/%s' % (self.client.base, uid)
        method = 'HEAD'

        self.backend.responses.add(mock, url, method)

        # Act, Assert
        self.assertEqual(self.client.head('object', uid), None)
Esempio n. 13
0
    def test_delete(self):
        """Positive test for DELETE"""
        # Arrange
        mock = MockResponse()
        mock.http_code = 200
        mock.src = 'success'

        uid = 1
        url = '%s/object/%s' % (self.client.base, uid)
        method = 'DELETE'

        self.backend.responses.add(mock, url, method)

        # Act, Assert
        self.assertEqual(self.client.delete('object', uid), mock.src)
Esempio n. 14
0
    def test_get(self):
        """Positive test for JSON GET"""
        # Arrange
        mock = MockResponse()
        mock.http_code = 200
        mock.src = '"success"'
        expected = "success"

        uid = 1
        url = '%s/object/%s' % (self.client.base, uid)
        method = 'GET'

        self.backend.responses.add(mock, url, method)

        # Act, Assert
        self.assertEqual(self.client.get('object', uid), expected)
Esempio n. 15
0
    def mocked_visit(self):
        mock = MockResponse()
        mock.src = "test data"
        mock.http_code = 123
        mock.headers = {}

        url = ""
        method  = 'GET'
        data    = None
        headers = None
        follow  = None
        agent   = None
        retries = None
        debug   = None

        self.backend.responses.add(mock, url, method, data, headers)
        self.browser.go(url, method, data, headers, follow, agent, retries, debug)
        return url, mock
Esempio n. 16
0
    def test_post(self):
        """Positive test for JSON POST"""
        # Arrange
        mock = MockResponse()
        mock.http_code = 200
        mock.src = '"success"'
        expected = "success"

        url = '%s/object' % self.client.base
        method = 'POST'
        data = dict(a=1, b=2, c=3)
        expected_data = '{"a": 1, "c": 3, "b": 2}'
        headers = { 'Content-Type': 'text/json' }

        self.backend.responses.add(mock, url, method, expected_data, headers)

        # Act, Assert
        self.assertEqual(self.client.post('object', data), expected, {'Content-Type': 'text/json'})
Esempio n. 17
0
    def test_mocked_code_data(self):
        """Different mocked response codes for different data passed"""
        # Arrange
        url = "duckduckgo.com/html"
        method = "POST"

        mock_one = MockResponse()
        mock_one.http_code = 1
        data_one = dict(foo="bar")
        self.backend.responses.add(mock_one, url, method, data_one)

        mock_two = MockResponse()
        mock_two.http_code = 2
        data_two = dict(bar="foo")
        self.backend.responses.add(mock_two, url, method, data_two)

        # Act, Assert
        self.assertEqual(self.browser.go(url, method, data_one), 1)
        self.assertEqual(self.browser.go(url, method, data_two), 2)
Esempio n. 18
0
    def test_follow_link(self):
        """Follow a link"""
        link_url = 'link'
        right_url = 'http://right'
        link_text = "Link text"

        link = MockResponse()
        link.src = """
            <a href="%s">%s</a>
        """ % (right_url, link_text)
        right = MockResponse()
        right.src = "success"

        self.backend.responses.add(link, link_url)
        self.backend.responses.add(right, right_url)

        # Act
        self.browser.go(link_url)
        self.browser.follow_link(link_text)
        self.assertEqual(self.browser.src, right.src)
Esempio n. 19
0
    def test_no_match_data(self):
        """Error when no canned data matches"""
        url = "form"
        form = MockResponse()
        form.src = """
            <form method="post">
                <input type="text" name="one" value="one" />
                <input type="text" name="two" value="two" />
                <input type="text" name="three" value="three" />
                <input type="submit" />
            </form>
        """
        wrong = MockResponse()
        wrong.src = "wrong"

        self.backend.responses.add(form, url)
        self.backend.responses.add(wrong, url, "POST", dict(four="four"))

        self.browser.go(url)
        self.browser.form_select(0)
        self.assertRaises(LookupError, self.browser.form_submit)
Esempio n. 20
0
    def test_match_data(self):
        """Pick the best data match"""
        url = "form"
        form = MockResponse()
        form.src = """
            <form method="post">
                <input type="text" name="one" value="one" />
                <input type="text" name="two" value="two" />
                <input type="text" name="three" value="three" />
                <input type="submit" />
            </form>
        """
        right = MockResponse()
        right.src = "right"
        wrong = MockResponse()
        wrong.src = "wrong"

        self.backend.responses.add(form, url)
        self.backend.responses.add(wrong, url, "POST", dict(one="one"))
        self.backend.responses.add(wrong, url, "POST", dict(two="two"))
        self.backend.responses.add(right, url, "POST", dict(one="one", two="two"))
        self.backend.responses.add(wrong, url, "POST", dict(three="three"))

        self.browser.go(url)
        self.browser.form_select(0)
        self.browser.form_submit()
        self.assertEqual(right.src, self.browser.src)