Service layer tests

- has tests in place for each service, testing all basic CRUD functionality
- all resource endpoints are now transactional, meaning if there is an error any updates to the DB will be rolled back.