]> scripts.mit.edu Git - autoinstalls/mediawiki.git/blob - tests/selenium/pageobjects/createaccount.page.js
MediaWiki 1.30.2
[autoinstalls/mediawiki.git] / tests / selenium / pageobjects / createaccount.page.js
1 'use strict';
2 const Page = require( './page' );
3
4 class CreateAccountPage extends Page {
5
6         get username() { return browser.element( '#wpName2' ); }
7         get password() { return browser.element( '#wpPassword2' ); }
8         get confirmPassword() { return browser.element( '#wpRetype' ); }
9         get create() { return browser.element( '#wpCreateaccount' ); }
10         get heading() { return browser.element( '#firstHeading' ); }
11
12         open() {
13                 super.open( 'Special:CreateAccount' );
14         }
15
16         createAccount( username, password ) {
17                 this.open();
18                 this.username.setValue( username );
19                 this.password.setValue( password );
20                 this.confirmPassword.setValue( password );
21                 this.create.click();
22         }
23
24         apiCreateAccount( username, password ) {
25                 const url = require( 'url' ), // https://nodejs.org/docs/latest/api/url.html
26                         baseUrl = url.parse( browser.options.baseUrl ), // http://webdriver.io/guide/testrunner/browserobject.html
27                         Bot = require( 'nodemw' ), // https://github.com/macbre/nodemw
28                         client = new Bot( {
29                                 protocol: baseUrl.protocol,
30                                 server: baseUrl.hostname,
31                                 port: baseUrl.port,
32                                 path: baseUrl.path,
33                                 debug: false
34                         } );
35
36                 return new Promise( ( resolve, reject ) => {
37                         client.api.call(
38                                 {
39                                         action: 'query',
40                                         meta: 'tokens',
41                                         type: 'createaccount'
42                                 },
43                                 /**
44                                  * @param {Error|null} err
45                                  * @param {Object} info Processed query result
46                                  * @param {Object} next More results?
47                                  * @param {Object} data Raw data
48                                  */
49                                 function ( err, info, next, data ) {
50                                         if ( err ) {
51                                                 reject( err );
52                                                 return;
53                                         }
54                                         client.api.call( {
55                                                 action: 'createaccount',
56                                                 createreturnurl: browser.options.baseUrl,
57                                                 createtoken: data.query.tokens.createaccounttoken,
58                                                 username: username,
59                                                 password: password,
60                                                 retype: password
61                                         }, function ( err ) {
62                                                 if ( err ) {
63                                                         reject( err );
64                                                         return;
65                                                 }
66                                                 resolve();
67                                         }, 'POST' );
68                                 },
69                                 'POST'
70                         );
71
72                 } );
73
74         }
75
76 }
77 module.exports = new CreateAccountPage();