import pytest
import vcr
from six.moves.urllib.request import urlopen


def test_making_extra_request_raises_exception(tmpdir, httpbin):
    # make two requests in the first request that are considered
    # identical (since the match is based on method)
    with vcr.use_cassette(str(tmpdir.join('test.json')), match_on=['method']):
        urlopen(httpbin.url + '/status/200')
        urlopen(httpbin.url + '/status/201')

    # Now, try to make three requests.  The first two should return the
    # correct status codes in order, and the third should raise an
    # exception.
    with vcr.use_cassette(str(tmpdir.join('test.json')), match_on=['method']):
        assert urlopen(httpbin.url + '/status/200').getcode() == 200
        assert urlopen(httpbin.url + '/status/201').getcode() == 201
        with pytest.raises(Exception):
            urlopen(httpbin.url + '/status/200')
