passport specs and refactor to use q.reject instead of throwing error