Integration Testing Domain Validator (with Jasmine)
jsFiddle template to run a jasmine test inside jsFiddle. Adds jasmine external resources, and initializes jasmine's HtmlReporter on window load. For more infor check this article: http://opensas.wordpress.com/2013/06/23/sharing-you-javascript-ninja-secrets-run-your-jasmine-tests-on-jsfiddle/
by Alex Cowan
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/3.2.1/jasmine.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/3.2.1/jasmine-html.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/3.2.1/boot.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jasmine/3.2.1/jasmine.min.css">
JavaScript
describe("Email domain validator", function() {
it("validates emails from our domains", function() {
expect(check_domain('[email protected]')).toBe(true);
});
it("invalidates emails not from our domains", function() {
expect(check_domain('[email protected]')).toBe(false);
});
it("invalidates badly formatted domains", function() {
expect(check_domain('alex_cowan@stanfordalumni')).toBe(false);
});
it("validates subdomains from our domains", function() {
expect(check_domain('[email protected]')).toBe(true);
});
});
//Validates email domain
function check_domain(email) {
OKdomains = get_domains();
//IRL, you'd want to validate the email address through an email (which Firebase does)
thisdomain = email.substring(email.lastIndexOf("@") +1);
console.log(thisdomain);
if(OKdomains.includes(thisdomain)){
return true;
} else {
return false;
}
}
//Gets valid domains
function get_domains() {
domains = ['hvachurry.com', 'alexandercowan.com', 'corp.hvachurry.com'];
return(domains);
//IRL, we'd probably want to pull this from a central source, but I decided to keep it simple for our purposes here ; )
}