Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4150056
editingFilters.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
editingFilters.js
View Options
'use strict'
;
const
assert
=
require
(
'assert'
),
LoginPage
=
require
(
'wdio-mediawiki/LoginPage'
),
ViewEditPage
=
require
(
'../pageobjects/viewedit.page'
),
ViewListPage
=
require
(
'../pageobjects/viewlist.page'
);
describe
(
'Filter editing'
,
()
=>
{
describe
(
'The editing interface'
,
()
=>
{
it
(
'is not visible to logged-out users'
,
async
()
=>
{
await
ViewEditPage
.
open
(
'new'
);
assert
(
await
ViewEditPage
.
error
.
isDisplayed
()
);
}
);
it
(
'is visible to logged-in admins'
,
async
()
=>
{
await
LoginPage
.
loginAdmin
();
await
ViewEditPage
.
open
(
'new'
);
assert
(
await
ViewEditPage
.
name
.
isDisplayed
()
);
}
);
}
);
describe
(
'Trying to open a non-existing filter'
,
()
=>
{
before
(
async
()
=>
{
await
LoginPage
.
loginAdmin
();
}
);
it
(
'I should receive an error'
,
async
()
=>
{
await
ViewEditPage
.
open
(
1234567
);
assert
(
await
ViewEditPage
.
error
.
isDisplayed
()
);
assert
.
strictEqual
(
await
ViewEditPage
.
error
.
getText
(),
'The filter you specified does not exist'
);
}
);
}
);
const
filterSpecs
=
{
name
:
'My test filter'
,
rules
:
'"confirmed" in user_groups & true === false'
,
comments
:
'Some notes'
,
warnMsg
:
'abusefilter-warning-foobar'
};
let
filterID
,
historyID
;
async
function
assertFirstVersionSaved
()
{
assert
.
strictEqual
(
await
ViewEditPage
.
name
.
getValue
(),
filterSpecs
.
name
);
assert
.
strictEqual
(
await
ViewEditPage
.
rules
.
getValue
(),
filterSpecs
.
rules
+
'\n'
);
assert
.
strictEqual
(
await
ViewEditPage
.
comments
.
getValue
(),
filterSpecs
.
comments
+
'\n'
);
await
ViewEditPage
.
warnCheckbox
.
isSelected
();
assert
.
strictEqual
(
await
ViewEditPage
.
warnOtherMessage
.
getValue
(),
filterSpecs
.
warnMsg
);
}
describe
(
'Creating a new filter'
,
()
=>
{
before
(
async
()
=>
{
await
LoginPage
.
loginAdmin
();
await
ViewEditPage
.
open
(
'new'
);
}
);
it
(
'edit can be saved (1)'
,
async
()
=>
{
await
ViewEditPage
.
switchEditor
();
await
ViewEditPage
.
name
.
setValue
(
filterSpecs
.
name
);
await
ViewEditPage
.
rules
.
setValue
(
filterSpecs
.
rules
);
await
ViewEditPage
.
comments
.
setValue
(
filterSpecs
.
comments
);
await
ViewEditPage
.
warnCheckbox
.
click
();
await
ViewEditPage
.
setWarningMessage
(
filterSpecs
.
warnMsg
);
await
ViewEditPage
.
submit
();
assert
(
await
ViewListPage
.
filterSavedNotice
.
isDisplayed
()
);
filterID
=
await
ViewListPage
.
savedFilterID
();
assert
.
ok
(
filterID
);
historyID
=
await
ViewListPage
.
savedFilterHistoryID
();
assert
.
ok
(
historyID
);
}
);
it
(
'saved data is retained (1)'
,
async
()
=>
{
await
ViewEditPage
.
open
(
filterID
);
await
assertFirstVersionSaved
();
}
);
}
);
describe
(
'Editing an existing filter'
,
()
=>
{
before
(
async
()
=>
{
await
LoginPage
.
loginAdmin
();
await
ViewEditPage
.
open
(
filterID
);
}
);
const
newName
=
'New filter name'
,
newNotes
=
'More filter notes'
;
it
(
'edit can be saved (2)'
,
async
()
=>
{
await
ViewEditPage
.
name
.
setValue
(
newName
);
await
ViewEditPage
.
comments
.
addValue
(
newNotes
);
await
ViewEditPage
.
submit
();
assert
(
await
ViewListPage
.
filterSavedNotice
.
isDisplayed
()
);
}
);
it
(
'saved data is retained (2)'
,
async
()
=>
{
await
ViewEditPage
.
open
(
filterID
);
assert
.
strictEqual
(
await
ViewEditPage
.
name
.
getValue
(),
newName
);
assert
.
strictEqual
(
await
ViewEditPage
.
comments
.
getValue
(),
newNotes
+
filterSpecs
.
comments
+
'\n'
);
}
);
}
);
describe
(
'Restoring an old version of a filter'
,
()
=>
{
before
(
async
()
=>
{
await
LoginPage
.
loginAdmin
();
}
);
it
(
'edit can be saved (3)'
,
async
()
=>
{
await
ViewEditPage
.
open
(
'history/'
+
filterID
+
'/item/'
+
historyID
);
await
ViewEditPage
.
submit
();
assert
(
await
ViewListPage
.
filterSavedNotice
.
isDisplayed
()
);
}
);
it
(
'saved data is retained (3)'
,
async
()
=>
{
await
ViewEditPage
.
open
(
filterID
);
await
assertFirstVersionSaved
();
}
);
}
);
describe
(
'CSRF protection'
,
()
=>
{
before
(
async
()
=>
{
await
LoginPage
.
loginAdmin
();
await
ViewEditPage
.
open
(
'new'
);
}
);
const
filterName
=
'Testing CSRF'
;
it
(
'a CSRF token is required to save the filter'
,
async
()
=>
{
await
ViewEditPage
.
invalidateToken
();
await
ViewEditPage
.
name
.
setValue
(
filterName
);
await
ViewEditPage
.
submit
();
assert
(
await
ViewEditPage
.
warning
.
isDisplayed
()
);
}
);
it
(
'even if the token is invalid, the ongoing edit is not lost'
,
async
()
=>
{
assert
.
strictEqual
(
await
ViewEditPage
.
name
.
getValue
(),
filterName
);
}
);
}
);
describe
(
'Trying to save a filter with bad data'
,
()
=>
{
before
(
async
()
=>
{
await
LoginPage
.
loginAdmin
();
await
ViewEditPage
.
open
(
'new'
);
}
);
it
(
'cannot save an empty filter'
,
async
()
=>
{
await
ViewEditPage
.
submit
();
assert
(
await
ViewEditPage
.
error
.
isDisplayed
()
);
}
);
const
rules
=
'action === "edit"'
;
it
(
'cannot save a filter with rules but no name'
,
async
()
=>
{
await
ViewEditPage
.
switchEditor
();
await
ViewEditPage
.
rules
.
setValue
(
rules
);
await
ViewEditPage
.
submit
();
assert
(
await
ViewEditPage
.
error
.
isDisplayed
()
);
}
);
// Skipped on 2023-04-04 in 905717 because of T334001
it
.
skip
(
'data is retained if saving fails'
,
async
()
=>
{
const
rulesValue
=
await
ViewEditPage
.
rules
.
getValue
();
assert
.
strictEqual
(
rulesValue
,
rules
+
'\n'
);
}
);
}
);
}
);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Aug 19 2026, 19:25 (6 w, 6 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
9c/dc/3d3ac8379377c3ee5395e3893d48
Default Alt Text
editingFilters.js (5 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment