Search code examples
pythondjangounit-testinghttp-authenticationdjango-testing

Using Basic HTTP access authentication in Django testing framework


For some of my Django views I've created a decorator that performs Basic HTTP access authentication. However, while writing test cases in Django, it took me a while to work out how to authenticate to the view. Here's how I did it. I hope somebody finds this useful.


Solution

  • Here's how I did it:

    from django.test import Client
    import base64
    auth_headers = {
        'HTTP_AUTHORIZATION': 'Basic ' + base64.b64encode('username:password'),
    }
    c = Client()
    response = c.get('/my-protected-url/', **auth_headers)
    

    Note: You will also need to create a user.