mirror of https://github.com/zulip/zulip.git
Casper test for realm creation.
This commit is contained in:
parent
eb9798027c
commit
7d654a26c8
|
@ -0,0 +1,91 @@
|
|||
var common = require('../casper_lib/common.js').common;
|
||||
|
||||
var email = 'alice@test.example.com';
|
||||
var domain = 'test.example.com';
|
||||
var organization_name = 'Awesome Organization';
|
||||
|
||||
casper.start('http://localhost:9981/create_realm/');
|
||||
|
||||
casper.then(function () {
|
||||
// Submit the email for realm creation
|
||||
this.waitForSelector('form[action^="/create_realm/"]', function () {
|
||||
this.fill('form[action^="/create_realm/"]', {
|
||||
email: email
|
||||
}, true);
|
||||
});
|
||||
// Make sure confirmation email is send
|
||||
this.waitWhileSelector('form[action^="/create_realm/"]', function () {
|
||||
var regex = new RegExp('^http:\/\/[^\/]+\/accounts\/send_confirm\/' + email);
|
||||
this.test.assertUrlMatch(regex, 'Confirmation mail send');
|
||||
});
|
||||
});
|
||||
|
||||
// Special endpoint enabled only during tests for extracting confirmation key
|
||||
casper.thenOpen('http://localhost:9981/confirmation_key/');
|
||||
|
||||
// Open the confirmation URL
|
||||
casper.then(function () {
|
||||
var confirmation_key = JSON.parse(this.getPageContent()).confirmation_key;
|
||||
var confirmation_url = 'http://localhost:9981/accounts/do_confirm/' + confirmation_key;
|
||||
this.thenOpen(confirmation_url);
|
||||
});
|
||||
|
||||
// Make sure the realm creation page is loaded correctly
|
||||
casper.then(function () {
|
||||
this.waitForSelector('.pitch', function () {
|
||||
this.test.assertSelectorHasText('.pitch', "You're almost there. We just need you to do one last thing.");
|
||||
});
|
||||
|
||||
this.waitForSelector('.controls.fakecontrol', function () {
|
||||
this.test.assertSelectorHasText('.controls.fakecontrol', email);
|
||||
});
|
||||
|
||||
this.waitForSelector('label[for=id_team_name]', function () {
|
||||
this.test.assertSelectorHasText('label[for=id_team_name]', 'Organization name');
|
||||
});
|
||||
});
|
||||
|
||||
casper.then(function () {
|
||||
this.waitForSelector('form[action^="/accounts/register/"]', function () {
|
||||
this.fill('form[action^="/accounts/register/"]', {
|
||||
full_name: 'Alice',
|
||||
realm_name: organization_name,
|
||||
password: 'password',
|
||||
terms: true
|
||||
}, true);
|
||||
});
|
||||
|
||||
this.waitWhileSelector('form[action^="/accounts/register/"]', function () {
|
||||
casper.test.assertUrlMatch('http://localhost:9981/invite/', 'Invite more users page loaded');
|
||||
});
|
||||
});
|
||||
|
||||
// Tests for invite more users page
|
||||
casper.then(function () {
|
||||
this.waitForSelector('.app-main.portico-page-container', function () {
|
||||
this.test.assertSelectorHasText('.app-main.portico-page-container', "You're the first one here!");
|
||||
});
|
||||
|
||||
this.waitForSelector('.invite_row', function () {
|
||||
this.test.assertSelectorHasText('.invite_row', domain);
|
||||
});
|
||||
|
||||
this.waitForSelector('#submit_invitation', function () {
|
||||
this.click('#submit_invitation');
|
||||
});
|
||||
|
||||
this.waitWhileSelector('#submit_invitation', function () {
|
||||
this.test.assertUrlMatch('http://localhost:9981/', 'Realm created and logged in');
|
||||
});
|
||||
});
|
||||
|
||||
casper.then(function () {
|
||||
// The user is logged in to the newly created realm
|
||||
this.test.assertTitle('home - ' + organization_name + ' - Zulip');
|
||||
});
|
||||
|
||||
common.then_log_out();
|
||||
|
||||
casper.run(function () {
|
||||
casper.test.done();
|
||||
});
|
|
@ -710,7 +710,7 @@ def accounts_home_with_domain(request, domain):
|
|||
return HttpResponseRedirect(reverse('zerver.views.accounts_home'))
|
||||
|
||||
def send_registration_completion_email(email, request, realm_creation=False):
|
||||
# type: (str, HttpRequest, bool) -> HttpResponse
|
||||
# type: (str, HttpRequest, bool) -> Confirmation
|
||||
"""
|
||||
Send an email with a confirmation link to the provided e-mail so the user
|
||||
can complete their registration.
|
||||
|
@ -735,7 +735,9 @@ def create_realm(request):
|
|||
form = RealmCreationForm(request.POST, domain=request.session.get("domain"))
|
||||
if form.is_valid():
|
||||
email = form.cleaned_data['email']
|
||||
send_registration_completion_email(email, request, realm_creation=True)
|
||||
confirmation_key = send_registration_completion_email(email, request, realm_creation=True).confirmation_key
|
||||
if settings.DEVELOPMENT:
|
||||
request.session['confirmation_key'] = {'confirmation_key': confirmation_key}
|
||||
return HttpResponseRedirect(reverse('send_confirm', kwargs={'email': email}))
|
||||
try:
|
||||
email = request.POST['email']
|
||||
|
@ -750,6 +752,8 @@ def create_realm(request):
|
|||
{'form': form, 'current_url': request.get_full_path},
|
||||
request=request)
|
||||
|
||||
def confirmation_key(request):
|
||||
return json_success(request.session.get('confirmation_key'))
|
||||
|
||||
def accounts_home(request):
|
||||
# type: (HttpRequest) -> HttpResponse
|
||||
|
|
|
@ -8,6 +8,7 @@ use_prod_static = getattr(settings, 'PIPELINE', False)
|
|||
static_root = os.path.join(settings.DEPLOY_ROOT, 'prod-static/serve' if use_prod_static else 'static')
|
||||
|
||||
urls = [url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': static_root})]
|
||||
i18n_urls = [url(r'^confirmation_key/$', 'zerver.views.confirmation_key')]
|
||||
|
||||
# These are used for voyager development. On a real voyager instance,
|
||||
# these files would be served by nginx.
|
||||
|
|
|
@ -291,6 +291,7 @@ urls += [
|
|||
|
||||
if settings.DEVELOPMENT:
|
||||
urls += dev_urls.urls
|
||||
i18n_urls += dev_urls.i18n_urls
|
||||
|
||||
# The sequence is important; if i18n urls don't come first then
|
||||
# reverse url mapping points to i18n urls which causes the frontend
|
||||
|
|
Loading…
Reference in New Issue