From b47fd838c6757373da33e605d52bc174e5c21f41 Mon Sep 17 00:00:00 2001
From: Martin Schoeler <martin.schoeler@rocket.chat>
Date: Fri, 10 Feb 2017 12:27:54 -0200
Subject: [PATCH]  Manually Approve New Users  test

start
---
 tests/end-to-end/ui/12-settings.js | 72 +++++++++++++++++++++++++++++-
 tests/pageobjects/login.page.js    |  1 +
 2 files changed, 71 insertions(+), 2 deletions(-)

diff --git a/tests/end-to-end/ui/12-settings.js b/tests/end-to-end/ui/12-settings.js
index 3be5bed3831..3b6e66ab5c6 100644
--- a/tests/end-to-end/ui/12-settings.js
+++ b/tests/end-to-end/ui/12-settings.js
@@ -2,6 +2,7 @@
 /* globals expect */
 /* eslint no-unused-vars: 0 */
 
+import loginPage from '../../pageobjects/login.page';
 import supertest from 'supertest';
 const request = supertest('http://localhost:3000');
 const prefix = '/api/v1/';
@@ -9,9 +10,10 @@ const prefix = '/api/v1/';
 import flexTab from '../../pageobjects/flex-tab.page';
 import mainContent from '../../pageobjects/main-content.page';
 import sideNav from '../../pageobjects/side-nav.page';
+import admin from '../../pageobjects/administration.page';
 
 //test data imports
-import {checkIfUserIsValid} from '../../data/checks';
+import {checkIfUserIsValid, checkIfUserIsAdmin} from '../../data/checks';
 import {targetUser, imgURL} from '../../data/interactions.js';
 
 import {adminUsername, adminEmail, adminPassword, username, email, password} from '../../data/user.js';
@@ -42,7 +44,7 @@ var settingValue = {
 	value : undefined
 };
 
-describe('Changing settings via api', () => {
+describe.only('Changing settings via api', () => {
 	before((done) => {
 		checkIfUserIsValid(username, email, password);
 		sideNav.spotlightSearch.waitForVisible(10000);
@@ -420,5 +422,71 @@ describe('Changing settings via api', () => {
 			});
 		});
 	});
+
+	describe('Manually Approve New Users', () => {
+		before(() => {
+			sideNav.accountBoxUserName.waitForVisible(5000);
+			sideNav.accountBoxUserName.click();
+			sideNav.logout.waitForVisible(5000);
+			sideNav.logout.click();
+
+			loginPage.open();
+		});
+
+		it('should change the Manually Approve New Users via api', (done) => {
+			request.post(api('settings/Accounts_ManuallyApproveNewUsers'))
+				.set(credentials)
+				.send({'value' : true})
+				.expect('Content-Type', 'application/json')
+				.expect(200)
+				.expect((res) => {
+					expect(res.body).to.have.property('success', true);
+				})
+				.end(done);
+		});
+
+		it('register the user', () => {
+			loginPage.registerButton.waitForVisible(5000);
+			loginPage.registerButton.click();
+			loginPage.nameField.waitForVisible(5000);
+			loginPage.nameField.setValue('setting'+username);
+			loginPage.emailField.setValue('setting'+email);
+			loginPage.passwordField.setValue(password);
+			loginPage.confirmPasswordField.setValue(password);
+
+			loginPage.submit();
+
+			loginPage.registrationSucceededCard.waitForVisible(5000);
+			loginPage.registrationSucceededCard.getText().should.equal('Registration Succeeded');
+			loginPage.backToLoginButton.click();
+		});
+
+		it('login as admin and go to users', () => {
+			checkIfUserIsAdmin(adminUsername, adminEmail, adminPassword);
+			sideNav.accountBoxUserName.click();
+			sideNav.admin.waitForVisible(5000);
+			sideNav.admin.click();
+			admin.usersLink.waitForVisible(5000);
+			admin.usersLink.click();
+			admin.usersFilter.waitForVisible(5000);
+		});
+
+		it('search the user', () => {
+			admin.usersFilter.click();
+			admin.usersFilter.setValue('setting'+username);
+		});
+
+		it('should change the Manually Approve New Users via api', (done) => {
+			request.post(api('settings/Accounts_ManuallyApproveNewUsers'))
+				.set(credentials)
+				.send({'value' : false})
+				.expect('Content-Type', 'application/json')
+				.expect(200)
+				.expect((res) => {
+					expect(res.body).to.have.property('success', true);
+				})
+				.end(done);
+		});
+	});
 });
 
diff --git a/tests/pageobjects/login.page.js b/tests/pageobjects/login.page.js
index 3bee5a1f699..b500a9609de 100644
--- a/tests/pageobjects/login.page.js
+++ b/tests/pageobjects/login.page.js
@@ -18,6 +18,7 @@ class LoginPage extends Page {
 	get emailInvalidText() { return browser.element('[name=email]~.input-error'); }
 	get passwordInvalidText() { return browser.element('[name=pass]~.input-error'); }
 	get confirmPasswordInvalidText() { return browser.element('[name=confirm-pass]~.input-error'); }
+	get registrationSucceededCard() { return browser.element('#login-card h2'); }
 
 	open() {
 		super.open('');
-- 
GitLab