Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F9312325
admin.spec.js
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
5 KB
Subscribers
None
admin.spec.js
View Options
/**
* Copyright (C) 2019 The Software Heritage developers
* See the AUTHORS file at the top-level directory of this distribution
* License: GNU Affero General Public License version 3, or any later version
* See top-level LICENSE file for more information
*/
const
$
=
Cypress
.
$
;
const
username
=
'admin'
;
const
password
=
'admin'
;
const
defaultRedirect
=
'/admin/origin/save/'
;
let
url
;
function
login
(
username
,
password
)
{
cy
.
get
(
'input[name="username"]'
)
.
type
(
username
)
.
get
(
'input[name="password"]'
)
.
type
(
password
)
.
get
(
'form'
)
.
submit
();
}
function
logout
()
{
cy
.
contains
(
'a'
,
'logout'
)
.
click
();
}
describe
(
'Test Admin Login/logout'
,
function
()
{
before
(
function
()
{
url
=
this
.
Urls
.
admin
();
});
it
(
'should redirect to default page'
,
function
()
{
cy
.
visit
(
url
);
login
(
username
,
password
);
cy
.
location
(
'pathname'
)
.
should
(
'be.equal'
,
defaultRedirect
);
logout
();
});
it
(
'should display admin-origin-save and deposit in sidebar'
,
function
()
{
cy
.
visit
(
url
);
login
(
username
,
password
);
cy
.
get
(
`.sidebar a[href="
${
this
.
Urls
.
admin_origin_save
()
}
"]`
)
.
should
(
'be.visible'
);
cy
.
get
(
`.sidebar a[href="
${
this
.
Urls
.
admin_deposit
()
}
"]`
)
.
should
(
'be.visible'
);
logout
();
});
it
(
'should display username on top-right'
,
function
()
{
cy
.
visit
(
url
);
login
(
username
,
password
);
cy
.
get
(
'.swh-position-right'
)
.
should
(
'contain'
,
username
);
logout
();
});
it
(
'should prevent unauthorized access after logout'
,
function
()
{
cy
.
visit
(
this
.
Urls
.
admin_origin_save
())
.
location
(
'pathname'
)
.
should
(
'be.equal'
,
'/admin/login/'
);
cy
.
visit
(
this
.
Urls
.
admin_deposit
())
.
location
(
'pathname'
)
.
should
(
'be.equal'
,
'/admin/login/'
);
});
it
(
'should redirect to correct page after login'
,
function
()
{
// mock calls to deposit list api to avoid possible errors
// while running the test
cy
.
server
();
cy
.
route
({
method
:
'GET'
,
url
:
`
${
this
.
Urls
.
admin_deposit_list
()
}
**`
,
response
:
{
data
:
[],
recordsTotal
:
0
,
recordsFiltered
:
0
,
draw
:
1
}
});
cy
.
visit
(
this
.
Urls
.
admin_deposit
())
.
location
(
'search'
)
.
should
(
'contain'
,
`next=
${
this
.
Urls
.
admin_deposit
()
}
`
);
login
(
username
,
password
);
cy
.
location
(
'pathname'
)
.
should
(
'be.equal'
,
this
.
Urls
.
admin_deposit
());
logout
();
});
});
const
existingRowToSelect
=
'https://bitbucket.org/'
;
const
originUrlListTestData
=
[
{
listType
:
'authorized'
,
originToAdd
:
'git://git.archlinux.org/'
,
originToRemove
:
'https://github.com/'
},
{
listType
:
'unauthorized'
,
originToAdd
:
'https://random.org'
,
originToRemove
:
'https://gitlab.com'
}
];
const
capitalize
=
s
=>
s
.
charAt
(
0
).
toUpperCase
()
+
s
.
slice
(
1
);
describe
(
'Test Admin Origin Save Urls Filtering'
,
function
()
{
beforeEach
(
function
()
{
cy
.
visit
(
this
.
Urls
.
admin_origin_save
());
login
(
username
,
password
);
cy
.
contains
(
'a'
,
'Origin urls filtering'
)
.
click
()
.
wait
(
500
);
});
it
(
`should select or unselect a table row by clicking on it`
,
function
()
{
cy
.
contains
(
`#swh-authorized-origin-urls tr`
,
existingRowToSelect
)
.
click
()
.
should
(
'have.class'
,
'selected'
)
.
click
()
.
should
(
'not.have.class'
,
'selected'
);
});
originUrlListTestData
.
forEach
(
testData
=>
{
it
(
`should add a new origin url prefix in the
${
testData
.
listType
}
list`
,
function
()
{
const
tabName
=
capitalize
(
testData
.
listType
)
+
' urls'
;
cy
.
contains
(
'a'
,
tabName
)
.
click
()
.
wait
(
500
);
cy
.
get
(
`#swh-
${
testData
.
listType
}
-origin-urls tr`
).
each
(
elt
=>
{
if
(
$
(
elt
).
text
()
===
testData
.
originToAdd
)
{
cy
.
get
(
elt
).
click
();
cy
.
get
(
`#swh-remove-
${
testData
.
listType
}
-origin-url`
).
click
();
}
});
cy
.
get
(
`#swh-
${
testData
.
listType
}
-url-prefix`
)
.
type
(
testData
.
originToAdd
);
cy
.
get
(
`#swh-add-
${
testData
.
listType
}
-origin-url`
)
.
click
();
cy
.
contains
(
`#swh-
${
testData
.
listType
}
-origin-urls tr`
,
testData
.
originToAdd
)
.
should
(
'be.visible'
);
cy
.
contains
(
'.alert-success'
,
`The origin url prefix has been successfully added in the
${
testData
.
listType
}
list.`
)
.
should
(
'be.visible'
);
cy
.
get
(
`#swh-add-
${
testData
.
listType
}
-origin-url`
)
.
click
();
cy
.
contains
(
'.alert-warning'
,
`The provided origin url prefix is already registered in the
${
testData
.
listType
}
list.`
)
.
should
(
'be.visible'
);
});
it
(
`should remove an origin url prefix from the
${
testData
.
listType
}
list`
,
function
()
{
const
tabName
=
capitalize
(
testData
.
listType
)
+
' urls'
;
cy
.
contains
(
'a'
,
tabName
)
.
click
();
let
originUrlMissing
=
true
;
cy
.
get
(
`#swh-
${
testData
.
listType
}
-origin-urls tr`
).
each
(
elt
=>
{
if
(
$
(
elt
).
text
()
===
testData
.
originToRemove
)
{
originUrlMissing
=
false
;
}
});
if
(
originUrlMissing
)
{
cy
.
get
(
`#swh-
${
testData
.
listType
}
-url-prefix`
)
.
type
(
testData
.
originToRemove
);
cy
.
get
(
`#swh-add-
${
testData
.
listType
}
-origin-url`
)
.
click
();
cy
.
get
(
'.alert-dismissible button'
).
click
();
}
cy
.
contains
(
`#swh-
${
testData
.
listType
}
-origin-urls tr`
,
testData
.
originToRemove
)
.
click
();
cy
.
get
(
`#swh-remove-
${
testData
.
listType
}
-origin-url`
).
click
();
cy
.
contains
(
`#swh-
${
testData
.
listType
}
-origin-urls tr`
,
testData
.
originToRemove
)
.
should
(
'not.exist'
);
});
});
});
File Metadata
Details
Attached
Mime Type
text/x-asm
Expires
Thu, Jul 3, 10:49 AM (2 w, 18 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3270420
Attached To
rDWAPPS Web applications
Event Timeline
Log In to Comment