Refactor Heaven::Provider class and add spec
Return forbidden/unprocessable status codes instead of not found