Ejemplo n.º 1
0
    def test_single_factory_usage(self, mock_client):
        current_id = 1234

        def create_resource():
            nonlocal current_id
            output = current_id
            current_id += 1

            return output
        fuzz_lightyear.register_factory('id')(create_resource)
        responses = validate_sequence(
            [
                FuzzingRequest(
                    tag='sequence',
                    operation_id='post_bravo_one',
                ),
                FuzzingRequest(
                    tag='sequence',
                    operation_id='get_bravo_two',
                ),
            ],
            ResponseSequence(),
        )

        assert responses.responses[-1] == 1234
        assert current_id != 1234
Ejemplo n.º 2
0
def test_endpoint_specific(mock_client):
    def factory():
        return 1

    def other_factory():
        return 2

    fuzz_lightyear.register_factory('string, integer')(factory)
    fuzz_lightyear.register_factory(
        'string, integer',
        operation_ids='get_expect_other_primitives',
    )(other_factory)

    request = FuzzingRequest(
        operation_id='get_expect_primitives',
        tag='types',
    )

    request.send()

    other_request = FuzzingRequest(
        operation_id='get_expect_other_primitives',
        tag='types',
    )

    other_request.send()

    assert request.fuzzed_input['string'] == '1'
    assert request.fuzzed_input['integer'] == 1
    assert other_request.fuzzed_input['string'] == '2'
    assert other_request.fuzzed_input['integer'] == 2
Ejemplo n.º 3
0
    def test_throws_error_when_no_default(self):
        def foobar(no_default):
            pass

        fuzz_lightyear.register_factory('a')(foobar)

        with pytest.raises(TypeError):
            get_user_defined_mapping()['a']()
Ejemplo n.º 4
0
def test_inject_variables(function):
    def generator():
        return 1

    fuzz_lightyear.register_factory('user_id')(generator)

    def wrapped(user_id):
        assert user_id == 1

    getattr(auth, function)(wrapped)

    getattr(get_abstraction(),
            f'get_{function.replace("account", "session")}')()
Ejemplo n.º 5
0
    def test_success(self, mock_client):
        def factory():
            return 1

        fuzz_lightyear.register_factory('id')(factory)

        request = FuzzingRequest(
            operation_id='get_public_listing',
            tag='basic',
        )

        request.send()

        assert request.fuzzed_input['id'] == 1
Ejemplo n.º 6
0
def test_session_fixtures(mock_client):
    count = 0

    def nested_function():
        nonlocal count
        count += 1
        return count

    def child_a(nested):
        return nested

    def child_b(nested):
        return nested

    def function(a, b):
        assert a == b
        return 'does_not_matter'

    fuzz_lightyear.register_factory('nested')(nested_function)
    fuzz_lightyear.register_factory('a')(child_a)
    fuzz_lightyear.register_factory('b')(child_b)
    fuzz_lightyear.register_factory('string')(function)

    request = FuzzingRequest(
        operation_id='get_expect_primitives',
        tag='types',
    )
    request.send()
Ejemplo n.º 7
0
    def test_exclude_parameter(self, mock_client):
        def factory():
            return None

        fuzz_lightyear.register_factory('id')(factory)

        request = FuzzingRequest(
            operation_id='get_public_listing',
            tag='basic',
        )

        # id is a required parameter, so this will raise, if the id isn't
        # provided (as expected)
        with pytest.raises(SwaggerMappingError):
            request.send()
Ejemplo n.º 8
0
    def test_nested(self, mock_client):
        def factory():
            return 'test_value'

        fuzz_lightyear.register_factory('session')(factory)

        request = FuzzingRequest(
            operation_id='post_nested_model',
            tag='complex',
        )

        request.send()

        assert request.fuzzed_input['payload']['info'][
            'session'] == 'test_value'
Ejemplo n.º 9
0
def test_type_hinting(mock_client):
    def factory():
        return 1

    fuzz_lightyear.register_factory('string, integer')(factory)

    request = FuzzingRequest(
        operation_id='get_expect_primitives',
        tag='types',
    )

    request.send()

    assert request.fuzzed_input['string'] == '1'
    assert request.fuzzed_input['integer'] == 1
Ejemplo n.º 10
0
    def test_fixture(self):
        def factory():
            return 'qux'

        fuzz_lightyear.register_factory('enumerated_field')(factory)

        factory = fuzz_parameters([(
            'enumerated_field',
            {
                'name': 'enumerated_field',
                'type': 'string',
                'enum': ['foo', 'bar'],
                'required': True,
            },
        )])

        assert factory.example()['enumerated_field'] == 'qux'
Ejemplo n.º 11
0
 def setup(self):
     fuzz_lightyear.register_factory('dependency')(self.dependency)
     fuzz_lightyear.register_factory('string_factory')(self.string_factory)
     fuzz_lightyear.register_factory('integer_factory')(
         self.integer_factory)
     fuzz_lightyear.register_factory('custom_factory')(self.custom_factory)
Ejemplo n.º 12
0
    def test_re_registration(self):
        function = fuzz_lightyear.register_factory('a')(self.dependency)
        fuzz_lightyear.register_factory('b')(function)

        assert get_user_defined_mapping()['b']() == 1
Ejemplo n.º 13
0
 def setup(self):
     fuzz_lightyear.register_factory('nested_dependency')(
         self.nested_dependency)
     fuzz_lightyear.register_factory('caller')(self.caller)
     fuzz_lightyear.register_factory('dependency')(self.dependency)
Ejemplo n.º 14
0
def register_function(key, return_value=None):
    def foobar():
        return return_value

    fuzz_lightyear.register_factory(key)(foobar)
    return foobar
Ejemplo n.º 15
0
 def setup(self):
     fuzz_lightyear.register_factory('nested_dependency')(
         self.nested_dependency)
     fuzz_lightyear.register_factory('caller')(self.caller)
     fuzz_lightyear.register_factory(
         'caller',
         operation_ids='new_opid',
     )(self.special_caller)
     fuzz_lightyear.register_factory(
         'caller',
         operation_ids='only_opid',
     )(self.endpt_specific_caller)
     fuzz_lightyear.register_factory('dependency')(self.dependency)
     fuzz_lightyear.register_factory(
         'endpt_dependency',
         operation_ids='only_opid',
     )(self.dependency)