# Handler Installation

By default the install function looks for the password file at ~/.buildout/.httpauth and installs a basic auth opener.

It does not fail if the file cannot be found.

    >>> import os
    >>> from lovely.buildouthttp.buildouthttp import install
    >>> install()

We can supply the path to the file for testing.

    >>> install(pwd_path='a')

If the file cannot be parsed an exception is raised.

    >>> fp = os.path.join(tmp,'pwd.txt')
    >>> import os
    >>> f = file(fp, 'w')
    >>> f.write('The realm,https://example.com/ something')
    >>> f.close()
    >>> install(pwd_path=fp)
    Traceback (most recent call last):
    ...
    RuntimeError: Authentication file cannot be parsed ...pwd.txt:1

Some working examples.

    >>> f = file(fp, 'w')
    >>> f.write('The realm,https://example.com/,username,password')
    >>> f.close()
    >>> install(pwd_path=fp)
    >>> f = file(fp, 'w')
    >>> f.write('The realm,https://example.com/,username,password\n\n\n')
    >>> f.close()
    >>> install(pwd_path=fp)
    >>> f = file(fp, 'w')
    >>> f.write('')
    >>> f.close()
    >>> install(pwd_path=fp)

Now let’s try with the `.httpauth` file in the buildout directory.

    >>> buildout_dir = os.path.join(tmp, 'test-buildout')
    >>> os.mkdir(buildout_dir)
    >>> buildout = {'buildout': {'directory': buildout_dir}}
    >>> install(buildout=buildout)
    >>> buildout_fp = os.path.join(buildout_dir, '.httpauth')
    >>> f = file(buildout_fp, 'w')
    >>> f.write('The realm,https://example.com/ not valid')
    >>> f.close()
    >>> install(buildout=buildout)
    Traceback (most recent call last):
    ...
    RuntimeError: Authentication file cannot be parsed ...None:1
    >>> f = file(buildout_fp, 'w')
    >>> f.write('The realm,https://example.com/,username,password')
    >>> f.close()
    >>> install(buildout=buildout)

Then with the file passed in and the file from the buildout directory.

    >>> f = file(fp, 'w')
    >>> f.write('The realm,https://example.com/,username,password')
    >>> f.close()
    >>> install(buildout=buildout, pwd_path=fp)