2015-10-14 00:21:23 +02:00
var common = require ( '../casper_lib/common.js' ) . common ;
2016-07-24 07:11:12 +02:00
var test _credentials = require ( '../../var/casper/test_credentials.js' ) . test _credentials ;
2016-07-19 14:35:08 +02:00
var REALMS _HAVE _SUBDOMAINS = casper . cli . get ( 'subdomains' ) ;
2017-05-30 16:12:02 +02:00
var OUTGOING _WEBHOOK _BOT _TYPE = '3' ;
2013-03-20 22:38:20 +01:00
common . start _and _log _in ( ) ;
2013-06-12 17:38:13 +02:00
var form _sel = 'form[action^="/json/settings/change"]' ;
2016-12-07 18:38:59 +01:00
var regex _zuliprc = /^data:application\/octet-stream;charset=utf-8,\[api\]\nemail=.+\nkey=.+\nsite=.+\n$/ ;
2017-05-30 16:12:02 +02:00
var regex _flaskbotrc = /^data:application\/octet-stream;charset=utf-8,\[.\]\nemail=.+\nkey=.+\nsite=.+\n$/ ;
2013-06-12 17:38:13 +02:00
2016-10-07 19:06:35 +02:00
casper . then ( function ( ) {
var menu _selector = '#settings-dropdown' ;
casper . waitUntilVisible ( menu _selector , function ( ) {
casper . click ( menu _selector ) ;
} ) ;
} ) ;
2016-11-17 12:25:05 +01:00
casper . then ( function ( ) {
casper . waitUntilVisible ( 'a[href^="#settings"]' , function ( ) {
casper . test . info ( 'Settings page' ) ;
casper . click ( 'a[href^="#settings"]' ) ;
} ) ;
2016-06-10 09:03:36 +02:00
} ) ;
2016-11-17 12:25:05 +01:00
casper . then ( function ( ) {
2016-12-03 01:12:52 +01:00
casper . waitUntilVisible ( "#settings_content .account-settings-form" , function ( ) {
2016-12-06 19:57:46 +01:00
casper . test . assertUrlMatch ( /^http:\/\/[^/]+\/#settings/ , 'URL suggests we are on settings page' ) ;
2016-12-03 01:12:52 +01:00
casper . test . assertVisible ( '.account-settings-form' , 'Settings page is active' ) ;
2013-06-12 17:38:13 +02:00
2016-11-17 12:25:05 +01:00
casper . test . assertNotVisible ( "#pw_change_controls" ) ;
2013-06-12 17:38:13 +02:00
2016-11-17 12:25:05 +01:00
casper . click ( ".change_password_button" ) ;
} ) ;
2013-06-12 17:38:13 +02:00
} ) ;
2016-11-17 12:25:05 +01:00
casper . then ( function ( ) {
casper . waitUntilVisible ( "#pw_change_controls" , function ( ) {
casper . waitForResource ( "zxcvbn.js" , function ( ) {
casper . test . assertVisible ( "#old_password" ) ;
casper . test . assertVisible ( "#new_password" ) ;
casper . test . assertVisible ( "#confirm_password" ) ;
casper . test . assertEqual ( casper . getFormValues ( form _sel ) . full _name , "Iago" ) ;
casper . fill ( form _sel , {
2016-12-03 03:08:47 +01:00
full _name : "IagoNew" ,
old _password : test _credentials . default _user . password ,
new _password : "qwertyuiop" ,
2017-01-12 00:17:43 +01:00
confirm _password : "qwertyuiop" ,
2016-11-17 12:25:05 +01:00
} ) ;
2017-03-18 10:44:00 +01:00
casper . click ( 'button[name="change_settings"]' ) ;
2016-06-04 02:19:07 +02:00
} ) ;
2013-06-12 17:38:13 +02:00
} ) ;
} ) ;
2016-11-17 12:25:05 +01:00
casper . then ( function ( ) {
2017-03-10 19:19:25 +01:00
casper . waitUntilVisible ( '#account-settings-status' , function ( ) {
casper . test . assertSelectorHasText ( '#account-settings-status' , 'Updated settings!' ) ;
2017-06-21 20:28:17 +02:00
casper . click ( '#api_key_button' ) ;
2016-11-17 12:25:05 +01:00
} ) ;
2013-06-12 17:38:13 +02:00
} ) ;
2016-11-17 12:25:05 +01:00
casper . then ( function ( ) {
casper . waitUntilVisible ( '#get_api_key_password' , function ( ) {
2016-12-03 03:08:47 +01:00
casper . fill ( 'form[action^="/json/fetch_api_key"]' , { password : 'qwertyuiop' } ) ;
2016-11-17 12:25:05 +01:00
casper . click ( 'input[name="view_api_key"]' ) ;
} ) ;
2013-03-20 22:38:20 +01:00
} ) ;
2016-11-17 12:25:05 +01:00
casper . then ( function ( ) {
casper . waitUntilVisible ( '#show_api_key_box' , function ( ) {
casper . test . assertMatch ( casper . fetchText ( '#api_key_value' ) , /[a-zA-Z0-9]{32}/ , "Looks like an API key" ) ;
2013-06-12 17:38:13 +02:00
2016-11-17 12:25:05 +01:00
// Change it all back so the next test can still log in
casper . fill ( form _sel , {
2016-12-03 03:08:47 +01:00
full _name : "Iago" ,
old _password : "qwertyuiop" ,
new _password : test _credentials . default _user . password ,
2017-01-12 00:17:43 +01:00
confirm _password : test _credentials . default _user . password ,
2016-11-17 12:25:05 +01:00
} ) ;
2017-03-18 10:44:00 +01:00
casper . click ( 'button[name="change_settings"]' ) ;
2013-06-12 17:38:13 +02:00
} ) ;
} ) ;
2016-12-07 18:38:59 +01:00
casper . then ( function ( ) {
casper . waitUntilVisible ( '#show_api_key_box' , function ( ) {
casper . test . assertExists ( '#download_zuliprc' , '~/.zuliprc button exists' ) ;
casper . click ( '#download_zuliprc' ) ;
} ) ;
} ) ;
casper . then ( function ( ) {
casper . waitUntilVisible ( '#download_zuliprc[href^="data:application"]' , function ( ) {
casper . test . assertMatch (
decodeURIComponent ( casper . getElementsAttribute ( '#download_zuliprc' , 'href' ) ) ,
regex _zuliprc ,
2017-01-11 23:47:14 +01:00
'Looks like a zuliprc file' ) ;
2016-12-07 18:38:59 +01:00
} ) ;
} ) ;
2017-06-13 17:57:33 +02:00
casper . then ( function ( ) {
casper . waitUntilVisible ( '#account-settings-status' , function ( ) {
casper . click ( '[data-section="your-bots"]' ) ;
} ) ;
} ) ;
2014-02-19 16:07:28 +01:00
casper . then ( function create _bot ( ) {
casper . test . info ( 'Filling out the create bot form' ) ;
casper . fill ( '#create_bot_form' , {
bot _name : 'Bot 1' ,
bot _short _name : '1' ,
2017-05-30 16:12:02 +02:00
bot _type : OUTGOING _WEBHOOK _BOT _TYPE ,
payload _url : 'http://hostname.example.com/bots/followup' ,
2014-02-19 16:07:28 +01:00
} ) ;
2017-03-05 04:17:12 +01:00
casper . test . info ( 'Submitting the create bot form' ) ;
2014-02-19 16:07:28 +01:00
casper . click ( '#create_bot_button' ) ;
} ) ;
2017-03-05 04:17:12 +01:00
var bot _email ;
if ( REALMS _HAVE _SUBDOMAINS ) {
bot _email = '1-bot@zulip.zulipdev.com' ;
} else {
bot _email = '1-bot@zulip.localhost' ;
}
2016-12-07 18:38:59 +01:00
casper . then ( function ( ) {
2017-03-05 04:17:12 +01:00
var button _sel = '.download_bot_zuliprc[data-email="' + bot _email + '"]' ;
2016-12-07 18:38:59 +01:00
casper . waitUntilVisible ( button _sel , function ( ) {
casper . click ( button _sel ) ;
casper . waitUntilVisible ( button _sel + '[href^="data:application"]' , function ( ) {
casper . test . assertMatch (
decodeURIComponent ( casper . getElementsAttribute ( button _sel , 'href' ) ) ,
regex _zuliprc ,
2017-01-11 23:47:14 +01:00
'Looks like a bot ~/.zuliprc file' ) ;
2016-12-07 18:38:59 +01:00
} ) ;
} ) ;
} ) ;
2017-05-30 16:12:02 +02:00
casper . then ( function ( ) {
casper . waitUntilVisible ( '#download_flaskbotrc' , function ( ) {
casper . click ( "#download_flaskbotrc" ) ;
casper . waitUntilVisible ( '#download_flaskbotrc[href^="data:application"]' , function ( ) {
casper . test . assertMatch (
decodeURIComponent ( casper . getElementsAttribute ( '#download_flaskbotrc' , 'href' ) ) ,
regex _flaskbotrc ,
'Looks like a flaskbotrc file' ) ;
} ) ;
} ) ;
} ) ;
2016-11-17 12:25:05 +01:00
casper . then ( function ( ) {
2017-03-05 04:17:12 +01:00
casper . waitUntilVisible ( '.open_edit_bot_form[data-email="' + bot _email + '"]' , function open _edit _bot _form ( ) {
2016-11-17 12:25:05 +01:00
casper . test . info ( 'Opening edit bot form' ) ;
2017-03-05 04:17:12 +01:00
casper . click ( '.open_edit_bot_form[data-email="' + bot _email + '"]' ) ;
2016-11-17 12:25:05 +01:00
} ) ;
2014-02-19 16:07:28 +01:00
} ) ;
2016-11-17 12:25:05 +01:00
casper . then ( function ( ) {
2017-03-05 04:17:12 +01:00
casper . waitUntilVisible ( '.edit_bot_form[data-email="' + bot _email + '"]' , function test _edit _bot _form _values ( ) {
var form _sel = '.edit_bot_form[data-email="' + bot _email + '"]' ;
2016-11-17 12:25:05 +01:00
casper . test . info ( 'Testing edit bot form values' ) ;
// casper.test.assertEqual(
// common.get_form_field_value(form_sel + ' [name=bot_name]'),
2017-01-11 23:47:14 +01:00
// 'Bot 1');
2016-11-17 12:25:05 +01:00
// casper.test.assertEqual(
// common.get_form_field_value(form_sel + ' [name=bot_default_sending_stream]'),
2017-01-11 23:47:14 +01:00
// 'Denmark');
2016-11-17 12:25:05 +01:00
// casper.test.assertEqual(
// common.get_form_field_value(form_sel + ' [name=bot_default_events_register_stream]'),
2017-01-11 23:47:14 +01:00
// 'Rome');
2016-11-17 12:25:05 +01:00
casper . test . assertEqual (
common . get _form _field _value ( form _sel + ' [name=bot_name]' ) ,
2017-01-11 23:47:14 +01:00
'Bot 1' ) ;
2016-11-17 12:25:05 +01:00
} ) ;
2014-02-19 16:07:28 +01:00
} ) ;
2017-06-08 14:53:52 +02:00
casper . then ( function ( ) {
casper . click ( '[data-section="alert-words"]' ) ;
casper . waitUntilVisible ( '#create_alert_word_form' , function ( ) {
casper . test . info ( 'Attempting to submit an empty alert word' ) ;
casper . click ( '#create_alert_word_button' ) ;
casper . waitUntilVisible ( '#alert_word_status' , function ( ) {
casper . test . info ( 'Checking that an error is displayed' ) ;
casper . test . assertSelectorHasText ( '.alert_word_status_text' , 'Alert word can\'t be empty!' ) ;
casper . test . info ( 'Closing the error message' ) ;
casper . click ( '.close-alert-word-status' ) ;
casper . test . info ( 'Checking the error is hidden' ) ;
casper . test . assertNotVisible ( '#alert_word_status' ) ;
} ) ;
} ) ;
} ) ;
2016-07-14 01:32:25 +02:00
2017-06-08 14:53:52 +02:00
casper . then ( function ( ) {
2016-06-24 01:53:49 +02:00
casper . test . info ( 'Filling out the alert word input' ) ;
casper . sendKeys ( '#create_alert_word_name' , 'some phrase' ) ;
casper . click ( '#create_alert_word_button' ) ;
2017-06-08 14:53:52 +02:00
casper . test . info ( 'Checking that a success message is displayed' ) ;
casper . waitUntilVisible ( '#alert_word_status' , function ( ) {
casper . test . assertSelectorHasText ( '.alert_word_status_text' , 'Alert word added successfully!' ) ;
casper . test . info ( 'Closing the status message' ) ;
casper . click ( '.close-alert-word-status' ) ;
casper . test . info ( 'Checking the status message is hidden' ) ;
casper . test . assertNotVisible ( '#alert_word_status' ) ;
} ) ;
} ) ;
2016-06-24 01:53:49 +02:00
2017-06-08 14:53:52 +02:00
casper . then ( function ( ) {
2016-06-24 01:53:49 +02:00
casper . test . info ( 'Checking that an element was created' ) ;
2017-06-08 14:53:52 +02:00
casper . waitUntilVisible ( ".alert-word-item[data-word='some phrase']" , function ( ) {
casper . test . assertExists ( 'div.alert-word-information-box' ) ;
casper . test . assertSelectorHasText ( 'span.value' , 'some phrase' ) ;
} ) ;
} ) ;
2016-06-24 01:53:49 +02:00
2017-06-11 21:30:06 +02:00
casper . then ( function ( ) {
casper . test . info ( 'Trying to create a duplicate alert word' ) ;
casper . sendKeys ( '#create_alert_word_name' , 'some phrase' ) ;
casper . click ( '#create_alert_word_button' ) ;
casper . test . info ( 'Checking that an error message is displayed' ) ;
casper . waitUntilVisible ( '#alert_word_status' , function ( ) {
casper . test . assertSelectorHasText ( '.alert_word_status_text' , 'Alert word already exists!' ) ;
casper . test . info ( 'Closing the status message' ) ;
casper . click ( '.close-alert-word-status' ) ;
casper . test . info ( 'Checking the status message is hidden' ) ;
casper . test . assertNotVisible ( '#alert_word_status' ) ;
} ) ;
} ) ;
2017-06-08 14:53:52 +02:00
casper . then ( function ( ) {
casper . test . info ( 'Deleting alert word' ) ;
2016-06-24 01:53:49 +02:00
casper . click ( 'button.remove-alert-word' ) ;
2017-06-08 14:53:52 +02:00
casper . test . info ( 'Checking that a success message is displayed' ) ;
casper . waitUntilVisible ( '#alert_word_status' , function ( ) {
casper . test . assertSelectorHasText ( '.alert_word_status_text' , 'Alert word removed successfully!' ) ;
casper . test . info ( 'Closing the status message' ) ;
casper . click ( '.close-alert-word-status' ) ;
casper . test . info ( 'Checking the status message is hidden' ) ;
casper . test . assertNotVisible ( '#alert_word_status' ) ;
} ) ;
2016-06-24 01:53:49 +02:00
casper . test . info ( 'Checking that the element was deleted' ) ;
2017-06-08 14:53:52 +02:00
casper . waitWhileVisible ( ".alert-word-item[data-word='some phrase']" , function ( ) {
casper . test . assertDoesntExist ( 'div.alert-word-information-box' ) ;
casper . test . info ( 'Element deleted successfully' ) ;
} ) ;
2016-06-24 01:53:49 +02:00
} ) ;
2016-07-05 08:03:22 +02:00
casper . then ( function change _default _language ( ) {
casper . test . info ( 'Changing the default language' ) ;
2016-12-03 01:12:52 +01:00
casper . click ( '[data-section="display-settings"]' ) ;
2017-02-10 07:54:02 +01:00
casper . waitUntilVisible ( '#default_language' ) ;
2016-07-05 08:03:22 +02:00
} ) ;
2016-08-02 15:03:42 +02:00
casper . thenClick ( '#default_language' ) ;
casper . waitUntilVisible ( '#default_language_modal' ) ;
2017-02-03 23:32:05 +01:00
casper . thenClick ( 'a[data-code="zh_Hans"]' ) ;
2016-08-02 15:03:42 +02:00
2016-07-05 08:03:22 +02:00
casper . waitUntilVisible ( '#display-settings-status' , function ( ) {
2017-02-03 23:32:05 +01:00
casper . test . assertSelectorHasText ( '#display-settings-status' , 'Chinese Simplified is now the default language' ) ;
2016-07-19 08:57:51 +02:00
casper . test . info ( "Reloading the page." ) ;
casper . reload ( ) ;
2016-07-05 08:03:22 +02:00
} ) ;
2016-11-17 12:25:05 +01:00
casper . then ( function ( ) {
2017-02-10 07:54:02 +01:00
casper . waitUntilVisible ( "#default_language" , function ( ) {
2016-11-17 12:25:05 +01:00
casper . test . info ( "Checking if we are on Chinese page." ) ;
casper . test . assertEvalEquals ( function ( ) {
2017-07-05 21:52:32 +02:00
return $ ( '#default_language_name' ) . text ( ) . trim ( ) ;
2017-02-03 23:32:05 +01:00
} , 'Chinese Simplified' ) ;
2016-11-17 12:25:05 +01:00
casper . test . info ( "Opening German page through i18n url." ) ;
} ) ;
2016-07-05 08:03:22 +02:00
} ) ;
2016-07-19 14:35:08 +02:00
var settings _url = "" ;
if ( REALMS _HAVE _SUBDOMAINS ) {
settings _url = 'http://zulip.zulipdev.com:9981/de/#settings' ;
} else {
2016-10-07 00:19:19 +02:00
settings _url = 'http://zulipdev.com:9981/de/#settings' ;
2016-07-19 14:35:08 +02:00
}
casper . thenOpen ( settings _url ) ;
2016-07-05 08:03:22 +02:00
2017-02-10 07:54:02 +01:00
casper . waitUntilVisible ( "#settings-change-box" , function check _url _preference ( ) {
2016-07-19 08:57:51 +02:00
casper . test . info ( "Checking the i18n url language precedence." ) ;
2016-07-05 08:03:22 +02:00
casper . test . assertEvalEquals ( function ( ) {
return document . documentElement . lang ;
} , 'de' ) ;
2017-02-03 23:32:05 +01:00
casper . test . info ( "English is now the default language" ) ;
2016-12-03 01:12:52 +01:00
casper . click ( '[data-section="display-settings"]' ) ;
2016-07-05 08:03:22 +02:00
} ) ;
2016-08-02 15:03:42 +02:00
casper . thenClick ( '#default_language' ) ;
casper . waitUntilVisible ( '#default_language_modal' ) ;
casper . thenClick ( 'a[data-code="en"]' ) ;
2016-07-19 08:57:51 +02:00
/ *
* Changing the language back to English so that subsequent tests pass .
* /
2016-07-05 08:03:22 +02:00
casper . waitUntilVisible ( '#display-settings-status' , function ( ) {
2017-02-03 23:32:05 +01:00
casper . test . assertSelectorHasText ( '#display-settings-status' , 'English ist die neue Standardsprache! Du musst das Fenster neu laden um die Änderungen anzuwenden' ) ;
2016-07-05 08:03:22 +02:00
} ) ;
2016-12-15 12:43:08 +01:00
if ( REALMS _HAVE _SUBDOMAINS ) {
settings _url = 'http://zulip.zulipdev.com:9981/' ;
} else {
settings _url = 'http://zulipdev.com:9981/' ;
}
casper . thenOpen ( settings _url ) ;
2013-08-06 21:32:15 +02:00
// TODO: test the "Declare Zulip Bankruptcy option"
2013-06-12 17:38:13 +02:00
2013-03-20 22:38:20 +01:00
common . then _log _out ( ) ;
casper . run ( function ( ) {
casper . test . done ( ) ;
} ) ;