summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'AbuseFilter/tests/selenium/specs/importingFilters.js')
-rw-r--r--AbuseFilter/tests/selenium/specs/importingFilters.js73
1 files changed, 73 insertions, 0 deletions
diff --git a/AbuseFilter/tests/selenium/specs/importingFilters.js b/AbuseFilter/tests/selenium/specs/importingFilters.js
new file mode 100644
index 00000000..6a4e1fd6
--- /dev/null
+++ b/AbuseFilter/tests/selenium/specs/importingFilters.js
@@ -0,0 +1,73 @@
+'use strict';
+
+const assert = require( 'assert' ),
+ LoginPage = require( 'wdio-mediawiki/LoginPage' ),
+ ViewEditPage = require( '../pageobjects/viewedit.page' ),
+ ViewListPage = require( '../pageobjects/viewlist.page' ),
+ ViewImportPage = require( '../pageobjects/viewimport.page' );
+
+describe( 'When importing a filter', function () {
+ const filterSpecs = {
+ name: 'My filter name',
+ comments: 'Notes go here.',
+ rules: 'true === false',
+ enabled: 1,
+ hidden: 1,
+ deleted: 0
+ },
+ warnMessage = 'abusefilter-warning-foobar';
+
+ function getImportData() {
+ return `{"row":{"af_id":"242","af_pattern":"${filterSpecs.rules}","af_user":"1","af_user_text":\
+"Daimona Eaytoy","af_timestamp":"20200924132008","af_enabled":"${filterSpecs.enabled}","af_comments":"\
+${filterSpecs.comments}","af_public_comments":"${filterSpecs.name}","af_hidden":"${filterSpecs.hidden}",\
+"af_hit_count":"0","af_throttled":"0","af_deleted":"${filterSpecs.deleted}","af_actions":"warn","af_global":\
+"0","af_group":"default"},"actions":{"warn":["${warnMessage}"]}}`;
+ }
+
+ before( function () {
+ LoginPage.loginAdmin();
+ } );
+
+ it( 'the interface should be visible', function () {
+ ViewImportPage.open();
+ assert( ViewImportPage.importData.isDisplayed() );
+ } );
+
+ it( 'it should redirect to ViewEdit after submission', function () {
+ ViewImportPage.importText( 'SOME INVALID GIBBERISH' );
+ assert( /\/new$/.test( browser.getUrl() ) );
+ } );
+
+ it( 'bad data results in an error', function () {
+ assert( ViewEditPage.error.isDisplayed() );
+ } );
+
+ it( 'valid data shows the editing interface', function () {
+ ViewImportPage.open();
+ ViewImportPage.importText( getImportData() );
+ assert( ViewEditPage.name.isDisplayed() );
+ } );
+
+ describe( 'Data on the editing interface is correct', function () {
+ it( 'filter specs are copied', function () {
+ assert.strictEqual( ViewEditPage.name.getValue(), filterSpecs.name );
+ assert.strictEqual( ViewEditPage.comments.getValue(), filterSpecs.comments + '\n' );
+ assert.strictEqual( ViewEditPage.rules.getValue(), filterSpecs.rules + '\n' );
+ } );
+ it( 'filter flags are copied', function () {
+ assert.strictEqual( ViewEditPage.enabled.isSelected(), !!filterSpecs.enabled );
+ assert.strictEqual( ViewEditPage.hidden.isSelected(), !!filterSpecs.hidden );
+ assert.strictEqual( ViewEditPage.deleted.isSelected(), !!filterSpecs.deleted );
+ } );
+ it( 'filter actions are copied', function () {
+ assert.strictEqual( ViewEditPage.warnCheckbox.isSelected(), true );
+ assert.strictEqual( ViewEditPage.warnOtherMessage.getValue(), warnMessage );
+ } );
+
+ it( 'the imported data can be saved', function () {
+ ViewEditPage.submit();
+ assert( ViewListPage.filterSavedNotice.isDisplayed() );
+ } );
+ } );
+} );