Enhancement user model testing take2

Adding up more assertions and cleaning up the hard coded email strings in the tests.
Math.random() will only produce numbers (which may be ok) and will not a bit of helper function wrappings to get strings out of it too. The ```crypto``` library seems a cleaner approach for this, especially if it's already included in the project and there's no need to specifically add a dependency on it.