Ejemplo n.º 1
0
def test_basics(no_warnings):
    router = routers.SimpleRouter()
    router.register('albums', AlbumModelViewset, basename="album")
    generator = SchemaGenerator(patterns=router.urls)
    schema = generator.get_schema(request=None, public=True)

    assert_schema(schema, 'tests/test_basic.yml')
Ejemplo n.º 2
0
def test_url_path_versioning(no_warnings, viewset_cls, version):
    router = routers.SimpleRouter()
    router.register('x', viewset_cls, basename='x')
    generator = SchemaGenerator(
        patterns=[re_path(r'^(?P<version>[v1|v2]+)/', include((router.urls, 'x')))],
        api_version=version,
    )
    schema = generator.get_schema(request=None, public=True)
    assert_schema(schema, f'tests/test_versioning_{version}.yml')
Ejemplo n.º 3
0
def test_rest_auth(no_warnings):
    urlpatterns = [
        path('rest-auth/', include('dj_rest_auth.urls')),
        path('rest-auth/registration/',
             include('dj_rest_auth.registration.urls')),
    ]
    schema = generate_schema(None, patterns=urlpatterns)
    assert_schema(schema,
                  'tests/contrib/test_rest_auth.yml',
                  transforms=transforms)
Ejemplo n.º 4
0
def test_accept_header_versioning(no_warnings, viewset_cls, version):
    router = routers.SimpleRouter()
    router.register('x', viewset_cls, basename='x')
    generator = SchemaGenerator(
        patterns=[
            path('', include((router.urls, 'x'))),
        ],
        api_version=version,
    )
    schema = generator.get_schema(request=None, public=True)
    assert_schema(schema, f'tests/test_versioning_accept_{version}.yml')
Ejemplo n.º 5
0
def test_rest_auth(no_warnings):
    urlpatterns = [
        path('rest-auth/', include('dj_rest_auth.urls')),
        path('rest-auth/registration/', include('dj_rest_auth.registration.urls')),
    ]

    generator = SchemaGenerator(patterns=urlpatterns)
    schema = generator.get_schema(request=None, public=True)

    assert_schema(
        schema, 'tests/contrib/test_rest_auth.yml', transforms=transforms
    )
Ejemplo n.º 6
0
def test_fields(no_warnings):
    from django.core.validators import URLValidator

    generator = SchemaGenerator()
    schema = generator.get_schema(request=None, public=True)

    # url pattern changed between django 3.0 and 3.1
    field_url = schema['components']['schemas']['AllFields']['properties']['field_url']
    assert field_url['pattern'] == URLValidator.regex.pattern
    field_url['pattern'] = 'URL_REGEX_PATTERN'

    assert_schema(schema, 'tests/test_fields.yml')
Ejemplo n.º 7
0
def test_simplejwt(no_warnings):
    router = routers.SimpleRouter()
    router.register('x', XViewset, basename="x")

    urlpatterns = [
        *router.urls,
        path('token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
        path('token-sliding/', TokenObtainSlidingView.as_view(), name='token_obtain_sliding'),
        path('token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
    ]

    schema = generate_schema(None, patterns=urlpatterns)
    assert_schema(schema, 'tests/contrib/test_simplejwt.yml')
Ejemplo n.º 8
0
def test_drf_jwt(no_warnings):
    router = routers.SimpleRouter()
    router.register('x', XViewset, basename="x")

    urlpatterns = [
        *router.urls,
        path('api-token-auth/', obtain_jwt_token, name='get_token'),
    ]

    generator = SchemaGenerator(patterns=urlpatterns)
    schema = generator.get_schema(request=None, public=True)

    assert_schema(schema, 'tests/contrib/test_drf_jwt.yml')
def test_drf_jwt(no_warnings):
    from rest_framework_jwt.views import obtain_jwt_token

    router = routers.SimpleRouter()
    router.register('x', XViewset, basename="x")

    urlpatterns = [
        *router.urls,
        path('api-token-auth/', obtain_jwt_token, name='get_token'),
    ]

    schema = generate_schema(None, patterns=urlpatterns)

    assert_schema(schema, 'tests/contrib/test_drf_jwt.yml')
Ejemplo n.º 10
0
def test_simplejwt(no_warnings):
    router = routers.SimpleRouter()
    router.register('x', XViewset, basename="x")

    urlpatterns = [
        *router.urls,
        path('token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
        path('token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
    ]

    generator = SchemaGenerator(patterns=urlpatterns)
    schema = generator.get_schema(request=None, public=True)

    assert_schema(schema, 'tests/contrib/test_simplejwt.yml')
Ejemplo n.º 11
0
def test_oauth2_toolkit(no_warnings):
    router = routers.SimpleRouter()
    router.register('x', XViewset, basename="x")

    urlpatterns = [
        *router.urls,
        path('o/', include('oauth2_provider.urls',
                           namespace='oauth2_provider')),
    ]

    generator = SchemaGenerator(patterns=urlpatterns)
    schema = generator.get_schema(request=None, public=True)

    assert_schema(schema, 'tests/contrib/test_oauth_toolkit.yml')
Ejemplo n.º 12
0
def test_oauth2_toolkit(no_warnings):
    router = routers.SimpleRouter()
    router.register('TokenHasReadWriteScope', TokenHasReadWriteScopeViewset, basename="x1")
    router.register('TokenHasResourceScope', TokenHasResourceScopeViewset, basename="x2")
    router.register('IsAuthenticatedOrTokenHasScope', IsAuthenticatedOrTokenHasScopeViewset, basename="x3")

    urlpatterns = [
        *router.urls,
        path('o/', include('oauth2_provider.urls', namespace='oauth2_provider')),
    ]

    generator = SchemaGenerator(patterns=urlpatterns)
    schema = generator.get_schema(request=None, public=True)

    assert_schema(schema, 'tests/contrib/test_oauth_toolkit.yml')
Ejemplo n.º 13
0
def test_rest_auth_token(no_warnings, settings):
    settings.REST_USE_JWT = True
    # flush module import cache to re-evaluate conditional import
    import dj_rest_auth.urls
    reload(dj_rest_auth.urls)

    urlpatterns = [
        # path('rest-auth/', include(urlpatterns)),
        path('rest-auth/', include('dj_rest_auth.urls')),
        path('rest-auth/registration/',
             include('dj_rest_auth.registration.urls')),
    ]

    schema = generate_schema(None, patterns=urlpatterns)

    assert_schema(schema,
                  'tests/contrib/test_rest_auth_token.yml',
                  transforms=transforms)
Ejemplo n.º 14
0
def test_accept_header_versioning(no_warnings, viewset_cls, version, with_request):
    router = routers.SimpleRouter()
    router.register('x', viewset_cls, basename='x')
    generator = SchemaGenerator(
        patterns=[
            path('', include((router.urls, 'x'))),
        ],
        api_version=version,
    )
    if with_request:
        view = SpectacularAPIView(
            versioning_class=AcceptHeaderVersioning,
        )
        factory = APIRequestFactory()
        request = factory.get('x', content_type='application/vnd.oai.openapi+json')
        request = view.initialize_request(request)
    else:
        request = None
    schema = generator.get_schema(request=request, public=True)
    assert_schema(schema, f'tests/test_versioning_accept_{version}.yml')
def test_drf_nested_routers_basic_example(no_warnings):
    from rest_framework_nested.routers import NestedSimpleRouter

    class RootViewSet(viewsets.ModelViewSet):
        serializer_class = RootSerializer
        queryset = Root.objects.all()

    class ChildViewSet(viewsets.ModelViewSet):
        serializer_class = ChildSerializer
        queryset = Child.objects.all()

    router = SimpleRouter()
    router.register('root', RootViewSet, basename='root')

    root_router = NestedSimpleRouter(router, r'root', lookup='parent')
    root_router.register(r'child', ChildViewSet, basename='child')

    urlpatterns = [
        re_path(r'^', include(router.urls)),
        re_path(r'^', include(root_router.urls)),
    ]
    schema = generate_schema(None, patterns=urlpatterns)
    assert_schema(schema, 'tests/contrib/test_drf_nested_routers.yml')
    assert schema
Ejemplo n.º 16
0
def test_postprocessing(no_warnings):
    schema = generate_schema('a', AViewset)
    assert_schema(schema, 'tests/test_postprocessing.yml')
Ejemplo n.º 17
0
def test_i18n_strings(no_warnings):
    with translation.override('de-de'):
        schema = generate_schema(None, patterns=urlpatterns)
        assert_schema(schema, 'tests/test_i18n.yml')
Ejemplo n.º 18
0
def test_recursion(no_warnings):
    assert_schema(generate_schema('nodes', TreeNodeViewset),
                  'tests/test_recursion.yml')
def test_rest_polymorphic(no_warnings):
    assert_schema(generate_schema('persons', PersonViewSet),
                  'tests/contrib/test_rest_polymorphic.yml')
Ejemplo n.º 20
0
def test_camelize_serializer_fields():
    assert_schema(generate_schema('a_b_c', FakeViewset),
                  'tests/contrib/test_djangorestframework_camel_case.yml')
Ejemplo n.º 21
0
def test_fields(no_warnings):
    assert_schema(generate_schema('allfields', AllFieldsModelViewset),
                  'tests/test_fields.yml')
Ejemplo n.º 22
0
def test_basic(no_warnings):
    assert_schema(generate_schema('albums', AlbumModelViewset),
                  'tests/test_basic.yml')
Ejemplo n.º 23
0
def test_i18n_strings(no_warnings):
    with translation.override('de-de'):
        generator = SchemaGenerator(patterns=urlpatterns)
        schema = generator.get_schema(request=None, public=True)
        assert_schema(schema, 'tests/test_i18n.yml')
Ejemplo n.º 24
0
def test_polymorphic(no_warnings, viewset):
    assert_schema(generate_schema('persons', viewset),
                  'tests/test_polymorphic.yml')
Ejemplo n.º 25
0
def test_django_filters(no_warnings):
    assert_schema(generate_schema('products', ProductViewset),
                  'tests/contrib/test_django_filters.yml')
Ejemplo n.º 26
0
def test_nested_partial_on_split_request_false(no_warnings):
    # without split request, PatchedY and Y have the same properties (minus required).
    # PATCH only modifies outermost serializer, nested serializers must stay unaffected.
    assert_schema(
        generate_schema('/x/', XViewset), 'tests/test_split_request_false.yml'
    )
Ejemplo n.º 27
0
def test_extend_schema(no_warnings):
    assert_schema(generate_schema('doesitall', DoesItAllViewset),
                  'tests/test_extend_schema.yml')
Ejemplo n.º 28
0
def test_nested_partial_on_split_request_true(no_warnings):
    # with split request, behaves like above, however response schemas are always unpatched.
    # nested request serializers are only affected by their manual partial flag and not due to PATCH.
    assert_schema(
        generate_schema('/x/', XViewset), 'tests/test_split_request_true.yml'
    )
Ejemplo n.º 29
0
def test_fields(no_warnings):
    assert_schema(SchemaGenerator().get_schema(request=None, public=True),
                  'tests/test_fields.yml')
def test_examples(no_warnings):
    assert_schema(
        generate_schema('schema', ExampleTestWithExtendedViewSet),
        'tests/test_examples.yml',
    )