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)