Challenge Overview
This is an extension of challenge: https://www.topcoder.com/challenge-details/30053036/
This is the eighth challenge in the series for cloudHub, where we are expanding on our API that was created in another challenge. These APIs are a series of endpoints built using swagger, nodeJS and mongodb. We have built the first iteration of the APIs, but are looking to expand and clean up the code base. In the forum we will upload the current code, which now includes the seed data script in /seed. Any submissions can skip the seed setup and just focus on validation and updates listed below.
Here are the user levels and their access to the data:
user - Limited API access to the system, longer valid token.
admin - Access to all information for only their company.
super-admin - Access to all information for all companies.
Requirements
1. We are going to make companyApps a subdocument within the company collection. (Update seed.js too)
2. Add test coverage with mocha for the API endpoints.
3. Verify all endpoints succeed with new required and unique fields in model.
4. Verify that user and admin roles are restricted to their company.
5. Update user endpoints to allow adding user with password that gets encrypted and an endpoint to reset password.
We have added eslint to the project and any submission needs to pass the linter.
Final Submission Guidelines
- Deploy your solution to Heroku and make sure to include your working Heroku instance URL as part of your documentation.
- Provide your code and documentation in a single zip file. Make sure you include steps to deploy to Heroku.
- The bulk of your documentation should be in the Readme.md and you should assume that this will be open source so make sure you cover all the steps to set up, If you have specific information that should not be included in a public readme (like your heroku link or links to your video) put them in a file called submission.txt and they will be omitted from the project if it is open sourced.
- Provide a quick video of your solution in action (feel free to annotate your video if you are not comfortable with spoken English or don’t like the sound of your own voice).