Esempio n. 1
0
    def test_random_selection(self):
        strategy = ResponseSelectionStrategy.random
        r1 = RouteResponse('id1', '', Delay(), weight=0.4)
        r2 = RouteResponse('id2', '', Delay(), weight=0.6)

        for i in range(250):
            response = strategy.select_response([r1, r2])
            response.use()

        assert r1.used_count < r2.used_count
Esempio n. 2
0
    def test_get_response_found(self):
        r1 = RouteResponse('id1', 'string', Delay())
        r2 = RouteResponse('id2', 'string', Delay())
        route = Route(
            id='id1',
            responses=[r1, r2],
            response_selection=ResponseSelectionStrategy.random,
            path=re.compile(r'/test.*'),
            auth=NoAuth(),
            method='GET'
        )

        assert route.get_response('id1') is r1
Esempio n. 3
0
    def test_greedy_selection(self):
        strategy = ResponseSelectionStrategy.greedy
        r1 = RouteResponse('id1', '', Delay(), repeat=2)
        r2 = RouteResponse('id2', '', Delay(), repeat=2)

        assert strategy.select_response([r1, r2]) is r1
        r1.use()
        assert strategy.select_response([r1, r2]) is r1
        r1.use()
        assert strategy.select_response([r1, r2]) is r2
        r2.use()
        assert strategy.select_response([r1, r2]) is r2
        r2.use()
        assert strategy.select_response([r1, r2]) is None
Esempio n. 4
0
 def test_use(self):
     response = RouteResponse('id', '', Delay(), repeat=1)
     assert response.is_active
     assert response.used_count == 0
     assert response.repeat == 1
     response.use()
     assert not response.is_active
     assert response.used_count == 1
     assert response.repeat == 1
Esempio n. 5
0
    def test_as_flask_response(self):
        context = ResponseContext({})
        response = Response({'key': 'value'},
                            Delay(),
                            headers={'header': 'header_value'})

        flask_response = response.as_flask_response(context)
        assert isinstance(flask_response, flask.Response)
        assert flask_response.status_code == 200
        assert flask_response.data == b'{"key": "value"}'
        assert flask_response.headers['header'] == 'header_value'
Esempio n. 6
0
    def test_is_not_active_if_no_active_response(self):
        response = RouteResponse('id1', 'string', Delay(), repeat=0)
        route = Route(
            id='id1',
            responses=[response],
            response_selection=ResponseSelectionStrategy.greedy,
            path=re.compile(r'/test.*'),
            auth=NoAuth(),
            method='GET'
        )

        assert route.is_active == 0
Esempio n. 7
0
    def test_select_response(self):
        response = RouteResponse('id1', 'string', Delay())
        route = Route(
            id='id1',
            responses=[response],
            response_selection=ResponseSelectionStrategy.greedy,
            path=re.compile(r'/test.*'),
            auth=NoAuth(),
            method='GET'
        )

        assert route.select_response() is response
Esempio n. 8
0
    def test_use_increases_counter(self):
        response = RouteResponse('id1', 'string', Delay())
        route = Route(
            id='id1',
            responses=[response],
            response_selection=ResponseSelectionStrategy.random,
            path=re.compile(r'/test.*'),
            auth=NoAuth(),
            method='GET'
        )

        route.use(response)
        assert route.used_count == 1
        assert response.used_count == 1
Esempio n. 9
0
 def test_match_active(self):
     route = Route(
         id='id1',
         responses=[
             RouteResponse('id1', '', Delay(), weight=0.4)
         ],
         response_selection=ResponseSelectionStrategy.random,
         path=re.compile(r'/test.*'),
         auth=NoAuth(),
         method='GET'
     )
     request = IncomingTestRequest(
         base_url='http://localhost/',
         full_path='/test_url',
         method='GET'
     )
     assert route.match(request)
Esempio n. 10
0
 def test_deserialize_delay_from_single_number(self):
     delay = Delay.deserialize(1.2)
     assert delay.min_delay == 1.2
     assert delay.max_delay == 1.2
Esempio n. 11
0
 def test_deserialize_delay_from_list(self):
     delay = Delay.deserialize([1.2, 3.4])
     assert delay.min_delay == 1.2
     assert delay.max_delay == 3.4
Esempio n. 12
0
 def test_serialize_body_returns_json_as_string(self):
     context = ResponseContext({})
     response = Response('id', {'key': 'value'}, Delay())
     response.serialize_body(context) == '{"key": "value"}'
Esempio n. 13
0
 def test_wait_calls_sleep(self, mocker):
     sleep = mocker.patch('time.sleep')
     delay = Delay(1.2, 3.4)
     delay.wait()
     sleep.assert_called_once()
Esempio n. 14
0
 def test_serialize_min_and_max(self):
     delay = Delay(1.2, 3.4)
     assert delay.serialize() == [1.2, 3.4]
Esempio n. 15
0
 def test_deserialize_delay_from_none(self):
     delay = Delay.deserialize(None)
     assert delay.min_delay == 0.0
     assert delay.max_delay == 0.0
Esempio n. 16
0
 def test_deserialize_min_larger_than_max(self):
     with pytest.raises(RouteConfigurationError):
         delay = Delay.deserialize([3.4, 1.2])
Esempio n. 17
0
 def test_serialize_without_arguments(self):
     delay = Delay()
     assert delay.serialize() == 0.0
Esempio n. 18
0
 def test_use(self):
     response = Response('', Delay())
     assert response.used_count == 0
     response.use()
     assert response.used_count == 1
Esempio n. 19
0
 def test_serialize_min_and_max_equal(self):
     delay = Delay(1.2, 1.2)
     assert delay.serialize() == 1.2
Esempio n. 20
0
 def test_wait(self, mocker):
     response = Response('', Delay(1.0, 2.0))
     sleep = mocker.patch('time.sleep')
     response.wait()
     sleep.assert_called_once()
Esempio n. 21
0
 def test_wait_with_empty_delay_calls_sleep_with_0(self, mocker):
     sleep = mocker.patch('time.sleep')
     delay = Delay()
     delay.wait()
     sleep.assert_called_once_with(0)
Esempio n. 22
0
 def test_serialize_body_returns_strings_as_inserted(self):
     context = ResponseContext({})
     response = Response('string', Delay())
     response.serialize_body(context) == 'string'