Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • pub/terrareg
Show changes
Commits on Source (9)
# Changelog
## [2.28.1](https://gitlab.dockstudios.co.uk/pub/terrareg/compare/v2.28.0...v2.28.1) (2022-07-20)
### Bug Fixes
* Catch errors when deleting module provider and module version in module provider settings. ([f834842](https://gitlab.dockstudios.co.uk/pub/terrareg/commit/f8348424e78e40d587152fff82859f61910d15a7)), closes [#198](https://gitlab.dockstudios.co.uk/pub/terrareg/issues/198)
* Display user-readable error when an authentication error occurs when creating a module ([c1f7708](https://gitlab.dockstudios.co.uk/pub/terrareg/commit/c1f7708861e43ddc4a3dbb446b5de26162234aa8)), closes [#198](https://gitlab.dockstudios.co.uk/pub/terrareg/issues/198)
* Provider user-friendly error when attempting to update settings of module provider when not authenticated ([b95f90b](https://gitlab.dockstudios.co.uk/pub/terrareg/commit/b95f90b62b1dc9bf285267a875af1f6480399dca)), closes [#198](https://gitlab.dockstudios.co.uk/pub/terrareg/issues/198)
* Scroll to error message on create module page when an error occurs ([bbfd60d](https://gitlab.dockstudios.co.uk/pub/terrareg/commit/bbfd60df53d8e26f2316cd7f529b7f169026651b)), closes [#198](https://gitlab.dockstudios.co.uk/pub/terrareg/issues/198)
# [2.28.0](https://gitlab.dockstudios.co.uk/pub/terrareg/compare/v2.27.2...v2.28.0) (2022-07-20)
......
......@@ -1196,6 +1196,16 @@ function deleteModuleVersion(moduleDetails) {
// This will automatically redirect back
// down the path to valid existing object.
window.location.href = `/modules/${ moduleDetails.module_provider_id }`;
}).fail((res) => {
if (res.status == 401) {
$('#settings-status-error').html('You must be logged in to perform this action.<br />If you were previously logged in, please re-authentication and try again.');
} else if (res.responseJSON && res.responseJSON.message) {
$('#settings-status-error').html(res.responseJSON.message);
} else {
$('#settings-status-error').html('An unexpected error occurred');
}
$('#settings-status-error').removeClass('default-hidden');
$(window).scrollTop($('#settings-status-error').offset().top);
});
return false;
}
......@@ -1217,6 +1227,16 @@ function deleteModuleProvider(moduleDetails) {
// This will automatically redirect back
// down the path to valid existing object.
window.location.href = `/modules/${moduleDetails.id}`;
}).fail((res) => {
if (res.status == 401) {
$('#settings-status-error').html('You must be logged in to perform this action.<br />If you were previously logged in, please re-authentication and try again.');
} else if (res.responseJSON && res.responseJSON.message) {
$('#settings-status-error').html(res.responseJSON.message);
} else {
$('#settings-status-error').html('An unexpected error occurred');
}
$('#settings-status-error').removeClass('default-hidden');
$(window).scrollTop($('#settings-status-error').offset().top);
});
}
......@@ -1243,12 +1263,15 @@ function updateModuleProviderSettings(moduleDetails) {
}).done(() => {
$('#settings-status-success').removeClass('default-hidden');
}).fail((res) => {
if (res.responseJSON && res.responseJSON.message) {
if (res.status == 401) {
$('#settings-status-error').html('You must be logged in to perform this action.<br />If you were previously logged in, please re-authentication and try again.');
} else if (res.responseJSON && res.responseJSON.message) {
$('#settings-status-error').html(res.responseJSON.message);
} else {
$('#settings-status-error').html('An unexpected error occurred');
}
$('#settings-status-error').removeClass('default-hidden');
$(window).scrollTop($('#settings-status-error').offset().top);
});
// Return false to present default action
......
......@@ -30,12 +30,15 @@
}).done((res) => {
window.location.href = `/modules/${res.id}`
}).fail((res) => {
if (res.responseJSON && res.responseJSON.message) {
if (res.status == 401) {
$('#create-error').html('You must be logged in to perform this action.<br />If you were previously logged in, please re-authentication and try again.');
} else if (res.responseJSON && res.responseJSON.message) {
$('#create-error').html(res.responseJSON.message);
} else {
$('#create-error').html('An unexpected error occurred');
}
$('#create-error').css('display', 'block');
$(window).scrollTop($('#create-error').offset().top);
});
}
......
......@@ -38,7 +38,7 @@ class SeleniumTest(BaseTest):
SELENIUM_INSTANCE = None
RESET_COOKIES = True
RUN_INTERACTIVELY = False
RUN_INTERACTIVELY = os.environ.get('RUN_INTERACTIVELY', False)
DEFAULT_RESOLUTION = (1280, 720)
......
......@@ -5,6 +5,7 @@ from unittest import mock
import pytest
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from terrareg.database import Database
from test.selenium import SeleniumTest
from terrareg.models import GitProvider, ModuleVersion, Namespace, Module, ModuleProvider
......@@ -923,7 +924,7 @@ module "fullypopulated" {{
self.perform_admin_authentication(password='unittest-password')
self.selenium_instance.get(self.get_url('/modules/moduledetails/fullypopulated/testprovider/2.5.5'))
self.selenium_instance.get(self.get_url('/modules/moduledetails/fullypopulated/testprovider/1.5.0'))
# Click on settings tab
tab = self.wait_for_element(By.ID, 'module-tab-link-settings')
......@@ -990,6 +991,83 @@ module "fullypopulated" {{
'testprovider'
).update_attributes(git_provider_id=None)
def test_updating_settings_after_logging_out(self):
"""Test accessing settings tab, logging out and attempting to save the changes in the settings tab."""
self.perform_admin_authentication(password='unittest-password')
self.selenium_instance.get(self.get_url('/modules/moduledetails/fullypopulated/testprovider/1.5.0'))
# Click on settings tab
tab = self.wait_for_element(By.ID, 'module-tab-link-settings')
tab.click()
# Delete all sessions from the database
db = Database.get()
with db.get_connection() as conn:
conn.execute(db.session.delete())
# Click update button
self.selenium_instance.find_element(By.ID, 'module-provider-settings-update').click()
error = self.wait_for_element(By.ID, 'settings-status-error')
assert error.text == ('You must be logged in to perform this action.\n'
'If you were previously logged in, please re-authentication and try again.')
def test_deleting_module_version_after_logging_out(self):
"""Test accessing settings tab, logging out and attempting to delete module version."""
self.perform_admin_authentication(password='unittest-password')
self.selenium_instance.get(self.get_url('/modules/moduledetails/fullypopulated/testprovider/1.5.0'))
# Click on settings tab
tab = self.wait_for_element(By.ID, 'module-tab-link-settings')
tab.click()
# Click delete version button
delete_button = self.selenium_instance.find_element(By.ID, 'module-version-delete-button')
delete_button.click()
# Ensure version number into verify input
self.selenium_instance.find_element(By.ID, 'confirm-delete-module-version').send_keys('1.5.0')
# Delete all sessions from the database
db = Database.get()
with db.get_connection() as conn:
conn.execute(db.session.delete())
# Click delete button again
delete_button.click()
error = self.wait_for_element(By.ID, 'settings-status-error')
assert error.text == ('You must be logged in to perform this action.\n'
'If you were previously logged in, please re-authentication and try again.')
def test_deleting_module_provider_after_logging_out(self):
"""Test accessing settings tab, logging out and attempting to delete module provider."""
self.perform_admin_authentication(password='unittest-password')
self.selenium_instance.get(self.get_url('/modules/moduledetails/fullypopulated/testprovider/1.5.0'))
# Click on settings tab
tab = self.wait_for_element(By.ID, 'module-tab-link-settings')
tab.click()
# Click delete version button
delete_button = self.selenium_instance.find_element(By.ID, 'module-provider-delete-button')
delete_button.click()
# Ensure version number into verify input
self.selenium_instance.find_element(By.ID, 'confirm-delete-module-provider').send_keys('moduledetails/fullypopulated/testprovider')
# Delete all sessions from the database
db = Database.get()
with db.get_connection() as conn:
conn.execute(db.session.delete())
# Click delete button again
delete_button.click()
error = self.wait_for_element(By.ID, 'settings-status-error')
assert error.text == ('You must be logged in to perform this action.\n'
'If you were previously logged in, please re-authentication and try again.')
def test_unpublished_only_module_provider(self):
"""Test module provider page for a module provider that only has an unpublished version."""
......