Refactor tests

Test are refactored to separate functionality and to enable reuse in users of the provider.
Argh, I missed it. Thanks.