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')
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')
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)
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')
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 )
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')
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')
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')
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')
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')
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')
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)
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
def test_postprocessing(no_warnings): schema = generate_schema('a', AViewset) assert_schema(schema, 'tests/test_postprocessing.yml')
def test_i18n_strings(no_warnings): with translation.override('de-de'): schema = generate_schema(None, patterns=urlpatterns) assert_schema(schema, 'tests/test_i18n.yml')
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')
def test_camelize_serializer_fields(): assert_schema(generate_schema('a_b_c', FakeViewset), 'tests/contrib/test_djangorestframework_camel_case.yml')
def test_fields(no_warnings): assert_schema(generate_schema('allfields', AllFieldsModelViewset), 'tests/test_fields.yml')
def test_basic(no_warnings): assert_schema(generate_schema('albums', AlbumModelViewset), 'tests/test_basic.yml')
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')
def test_polymorphic(no_warnings, viewset): assert_schema(generate_schema('persons', viewset), 'tests/test_polymorphic.yml')
def test_django_filters(no_warnings): assert_schema(generate_schema('products', ProductViewset), 'tests/contrib/test_django_filters.yml')
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' )
def test_extend_schema(no_warnings): assert_schema(generate_schema('doesitall', DoesItAllViewset), 'tests/test_extend_schema.yml')
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' )
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', )