Esempio n. 1
0
    def test_response_handler_script(self):
        script = dedent('''
        console.log('Multiline script');
        client.global.set("auth", response.body.token);
        ''')
        body = dedent('''
        > {% ''' + script + ''' %}''')

        tail = TailParser().parse(body)
        self.assertEqual(
            tail.response_handler,
            ResponseHandler(script=script.strip(),
                            path=None,
                            expected_status_code=None))
Esempio n. 2
0
    def test_multipart(self):
        body = dedent('''
        --abcd
        Content-Disposition: form-data; name="text"

        Text
        --abcd
        Content-Disposition: form-data; name="file_to_send"; filename="input.txt"

        < ./input.txt
        --abcd--''')

        tail = TailParser(multipart_boundary='abcd').parse(body)
        self.assertEqual(
            tail.message_body,
            MessageBody([
                MultipartField(headers=[
                    Header(field='Content-Disposition',
                           value='form-data; name="text"')
                ],
                               messages=[ContentLine(content='Text')]),
                MultipartField(headers=[
                    Header(
                        field='Content-Disposition',
                        value=
                        'form-data; name="file_to_send"; filename="input.txt"')
                ],
                               messages=[InputFileRef(path='./input.txt')])
            ]))
Esempio n. 3
0
    def test_multiple_requests(self):
        reqs = self.parser.parse(dedent('''
        ### First
        GET http://example.com
        ### Second
        POST http://example.com
        ###
        ### Third
        /api/test
        Host: example.com
        ###
        ###
        '''))

        self.assertEqual(len(reqs), 3)
        self.assertEqual(reqs[0].method, 'GET')
        self.assertEqual(reqs[0].separators, [RequestSeparator('First')])
        self.assertEqual(reqs[0].target, 'http://example.com')
        self.assertEqual(reqs[1].method, 'POST')
        self.assertEqual(reqs[1].separators, [RequestSeparator('Second')])
        self.assertEqual(reqs[1].target, 'http://example.com')
        self.assertEqual(reqs[2].method, 'GET')
        self.assertEqual(reqs[2].separators, [RequestSeparator(None), RequestSeparator('Third')])
        self.assertEqual(reqs[2].target, '/api/test')
        self.assertEqual(reqs[2].headers[0], Header('Host', 'example.com'))
Esempio n. 4
0
    def test_response_ref(self):
        body = dedent('''
        <> ./previous-response.200.json''')

        tail = TailParser().parse(body)
        self.assertEqual(
            tail.response_ref,
            ResponseReference(path='./previous-response.200.json'))
Esempio n. 5
0
    def test_response_status_code(self):
        body = dedent('''
        >STATUS 301''')

        tail = TailParser().parse(body)
        self.assertEqual(
            tail.response_handler,
            ResponseHandler(script=None, path=None, expected_status_code=301))
Esempio n. 6
0
    def test_localhost_port(self):
        reqs = self.parser.parse(dedent('''
        POST http://localhost:3000/api/a/b/c/
        '''))

        self.assertEqual(len(reqs), 1)
        self.assertEqual(reqs[0].method, 'POST')
        self.assertEqual(reqs[0].target, 'http://localhost:3000/api/a/b/c/')
Esempio n. 7
0
    def test_response_handler_path(self):
        body = dedent('''
        > ./script.js''')

        tail = TailParser().parse(body)
        self.assertEqual(
            tail.response_handler,
            ResponseHandler(script=None,
                            path='./script.js',
                            expected_status_code=None))
Esempio n. 8
0
    def test_simple_with_tail(self):
        reqs = self.parser.parse(dedent('''
        ### Post to API add
        POST http://example.com/api/a/b/c
        Content-Type: application/json
        From: [email protected]

        {
            "name": "entity",
            "value": "content"
        }
        > {%
        if (resp.status === 200) {
            resolve();
        }
        %}
        <> ./path/response.ref.json
        '''))

        self.assertEqual(len(reqs), 1)
        self.assertEqual(reqs[0].method, 'POST')
        self.assertEqual(reqs[0].target, 'http://example.com/api/a/b/c')
        self.assertEqual(len(reqs[0].headers), 2)
        self.assertEqual(reqs[0].headers[0], Header('Content-Type', 'application/json'))
        self.assertEqual(reqs[0].headers[1], Header('From', '*****@*****.**'))
        self.assertEqual(reqs[0].tail, RequestTail(
            message_body=MessageBody([
                ContentLine('{'),
                ContentLine('    "name": "entity",'),
                ContentLine('    "value": "content"'),
                ContentLine('}')
            ]),
            response_handler=ResponseHandler(
                script=dedent('''
                if (resp.status === 200) {
                    resolve();
                }
                ''').strip(),
                path=None,
                expected_status_code=None
            ),
            response_ref=ResponseReference(path='./path/response.ref.json')
        ))
Esempio n. 9
0
    def test_absolute_form(self):
        reqs = self.parser.parse(dedent('''
        ### Post to API add
        POST http://example.com/api/a/b/c
        Content-Type: application/json
        '''))

        self.assertEqual(len(reqs), 1)
        self.assertEqual(reqs[0].method, 'POST')
        self.assertEqual(reqs[0].target, 'http://example.com/api/a/b/c')
Esempio n. 10
0
    def test_file_refs(self):
        body = dedent('''
        < body.json
        < /home/file''')

        tail = TailParser().parse(body)
        self.assertEqual(
            tail.message_body,
            MessageBody(
                [InputFileRef('body.json'),
                 InputFileRef('/home/file')]))
Esempio n. 11
0
    def test_request_options(self):
        reqs = self.parser.parse(dedent('''
        ### Post to API add
        // @no-redirect
        POST http://example.com/api/a/b/c
        Content-Type: application/json
        '''))

        self.assertEqual(len(reqs), 1)
        self.assertEqual(reqs[0].method, 'POST')
        self.assertEqual(reqs[0].target, 'http://example.com/api/a/b/c')
Esempio n. 12
0
    def test_origin_form_and_headers(self):
        reqs = self.parser.parse(dedent('''
        PUT /api/a/b/c?a=123&b=456&
                        c=789#foo
        Host: multiline.
                    example.
                    com
        Content-Type:         application/json
        '''))

        self.assertEqual(len(reqs), 1)
        self.assertEqual(reqs[0].method, 'PUT')
        self.assertEqual(reqs[0].target, '/api/a/b/c?a=123&b=456&c=789#foo')
        self.assertEqual(reqs[0].headers[0], Header('Host', 'multiline.example.com'))
        self.assertEqual(reqs[0].headers[1], Header('Content-Type', 'application/json'))
Esempio n. 13
0
    def test_simple(self):
        reqs = self.parser.parse(dedent('''
        ### Post to API add
        ### post-to-api
        POST http://example.com/api/a/b/c/
        Content-Type: application/json
        From: [email protected]
        '''))

        self.assertEqual(len(reqs), 1)
        self.assertEqual(reqs[0].id, 'post-to-api')
        self.assertEqual(reqs[0].method, 'POST')
        self.assertEqual(reqs[0].target, 'http://example.com/api/a/b/c/')
        self.assertEqual(len(reqs[0].headers), 2)
        self.assertEqual(reqs[0].headers[0], Header('Content-Type', 'application/json'))
        self.assertEqual(reqs[0].headers[1], Header('From', '*****@*****.**'))
Esempio n. 14
0
    def test_content_lines(self):
        body = dedent('''
        {
            "foo": "bar",
            "param2": "value2"
        }''')

        tail = TailParser().parse(body)

        self.assertEqual(
            tail.message_body,
            MessageBody([
                ContentLine('{'),
                ContentLine('    "foo": "bar",'),
                ContentLine('    "param2": "value2"'),
                ContentLine('}')
            ]))
Esempio n. 15
0
    def test_message_body(self):
        body = dedent('''
        {
            "key": "val"
        }
        < body.json
        < /home/file
        testing''')

        tail = TailParser().parse(body)
        self.assertEqual(
            tail.message_body,
            MessageBody([
                ContentLine('{'),
                ContentLine('    "key": "val"'),
                ContentLine('}'),
                InputFileRef('body.json'),
                InputFileRef('/home/file'),
                ContentLine('testing')
            ]))
Esempio n. 16
0
    def test_newlines(self):
        reqs = self.parser.parse(dedent('''
        
        
        ###
        
        POST http://example.com/api/a/b/c
         
        ###
        ###
        ###
        
        POST http://example.com/api/a/b/c
        
        ### 
        
        ###
        
        
        
        '''))

        self.assertEqual(len(reqs), 2)