Homework 8: Speaking SQL

Due Thursday, Oct 23rd, at 12:40pm (lab start).

Acquire the sqlite database at

http://class.ged.idyll.org/svn/files/hw-8/webserve-info.db

The database schema has a table 'users' containing username/password pairs:

CREATE TABLE users (username TEXT NOT NULL, password TEXT NOT NULL);

Change your authentication code to authenticate by checking both username and password against the contents of this table. (1 point)

Also, provide a Python function accessible directly from webserve.py that adds users; the function should be named 'add_user', and it should take a username and a password and add them to your local copy of the sqlite database. (1 point)

You should make sure that all of the unit tests in this file

http://class.ged.idyll.org/svn/files/hw-8/webserve-test.py

pass; I've updated them to include tests for add_user. (1 point)

Now create a new file, webserve-user-tests.py, in the homework8/ subdirectory. These tests should be unit tests (i.e. in the same format as webserve-test.py) that check to make sure that usernames can contain strange characters like these:

'!"#$%&'()*+,-./:;<=>?@[]^_`{|}~'

in addition to a-z, A-Z, and 0-9. The tests must rely only on the "public" API of webserve, that is, they should only use handle_connection, delegate, and add_user -- not any intermediate functions you may have written. (1 point)

Finally, make sure that the auth functionality (login/logout, password checking, etc.) works properly with Firefox. (1 point)

I'm running an example Web server that passes all the tests here:

http://class.ged.idyll.org:8080/