From ce760c688b70952cab3d67b7572f34941a83ea2f Mon Sep 17 00:00:00 2001 From: Marcial Rosales Date: Thu, 21 Nov 2024 16:47:48 +0100 Subject: [PATCH] Insert control-cache headers to every resource and reload index.html --- .../workflows/test-management-ui-for-pr.yaml | 9 ++--- deps/rabbitmq_management/priv/www/index.html | 6 +-- deps/rabbitmq_management/priv/www/js/main.js | 13 ++++-- .../priv/www/js/oidc-oauth/helper.js | 28 ++++++++----- .../src/rabbit_mgmt_dispatcher.erl | 3 +- .../src/rabbit_mgmt_headers.erl | 8 +++- .../src/rabbit_mgmt_wm_version.erl | 38 ++++++++++++++++++ .../test/rabbit_mgmt_http_SUITE.erl | 13 ++++-- selenium/README.md | 3 ++ selenium/bin/components/keycloak | 2 +- selenium/bin/suite_template | 17 +++++--- selenium/clean.sh | 3 ++ .../suites/authnz-mgt/oauth-and-basic-auth.sh | 2 +- selenium/test/basic-auth/unauthorized.js | 7 ++-- .../certs/server_rabbitmq_certificate.pem | 22 ---------- .../multi-oauth/certs/server_rabbitmq_key.pem | 28 ------------- .../devkeycloak/server_devkeycloak.p12 | Bin 3683 -> 0 bytes .../server_devkeycloak_certificate.pem | 23 ----------- .../devkeycloak/server_devkeycloak_key.pem | 28 ------------- .../prodkeycloak/server_prodkeycloak.p12 | Bin 3683 -> 0 bytes .../server_prodkeycloak_certificate.pem | 23 ----------- .../prodkeycloak/server_prodkeycloak_key.pem | 28 ------------- .../with-basic-auth-idp-down/happy-login.js | 12 +++--- selenium/test/pageobjects/BasePage.js | 16 +++++--- selenium/test/pageobjects/SSOHomePage.js | 3 ++ 25 files changed, 131 insertions(+), 204 deletions(-) create mode 100644 deps/rabbitmq_management/src/rabbit_mgmt_wm_version.erl create mode 100755 selenium/clean.sh delete mode 100644 selenium/test/multi-oauth/certs/server_rabbitmq_certificate.pem delete mode 100644 selenium/test/multi-oauth/certs/server_rabbitmq_key.pem delete mode 100644 selenium/test/multi-oauth/devkeycloak/server_devkeycloak.p12 delete mode 100644 selenium/test/multi-oauth/devkeycloak/server_devkeycloak_certificate.pem delete mode 100644 selenium/test/multi-oauth/devkeycloak/server_devkeycloak_key.pem delete mode 100644 selenium/test/multi-oauth/prodkeycloak/server_prodkeycloak.p12 delete mode 100644 selenium/test/multi-oauth/prodkeycloak/server_prodkeycloak_certificate.pem delete mode 100644 selenium/test/multi-oauth/prodkeycloak/server_prodkeycloak_key.pem diff --git a/.github/workflows/test-management-ui-for-pr.yaml b/.github/workflows/test-management-ui-for-pr.yaml index 3a39253a1d..7b00b5a099 100644 --- a/.github/workflows/test-management-ui-for-pr.yaml +++ b/.github/workflows/test-management-ui-for-pr.yaml @@ -56,13 +56,13 @@ jobs: cd ${SELENIUM_DIR} docker build -t mocha-test --target test . - - name: Run full ui suites on a standalone rabbitmq server + - name: Run short ui suites on a standalone rabbitmq server run: | IMAGE_TAG=$(find PACKAGES/rabbitmq-server-generic-unix-*.tar.xz | awk -F 'PACKAGES/rabbitmq-server-generic-unix-|.tar.xz' '{print $2}') RABBITMQ_DOCKER_IMAGE=pivotalrabbitmq/rabbitmq:$IMAGE_TAG \ - ${SELENIUM_DIR}/run-suites.sh short-suite-management-ui - mkdir -p /tmp/full-suite - mv /tmp/selenium/* /tmp/full-suite + ${SELENIUM_DIR}/run-suites.sh short-suite-management-ui + mkdir -p /tmp/short-suite + mv /tmp/selenium/* /tmp/short-suite - name: Upload Test Artifacts if: always() @@ -70,7 +70,6 @@ jobs: with: name: test-artifacts-${{ matrix.browser }}-${{ matrix.erlang_version }} path: | - /tmp/full-suite /tmp/short-suite summary-selenium: diff --git a/deps/rabbitmq_management/priv/www/index.html b/deps/rabbitmq_management/priv/www/index.html index b72e0cda9c..56b51206b4 100644 --- a/deps/rabbitmq_management/priv/www/index.html +++ b/deps/rabbitmq_management/priv/www/index.html @@ -21,9 +21,9 @@ - diff --git a/deps/rabbitmq_management/priv/www/js/main.js b/deps/rabbitmq_management/priv/www/js/main.js index 3955f4a6da..7eebd3a6b1 100644 --- a/deps/rabbitmq_management/priv/www/js/main.js +++ b/deps/rabbitmq_management/priv/www/js/main.js @@ -119,15 +119,13 @@ function check_login () { if (user == false || user.error) { clear_auth(); if (oauth.enabled) { - //hide_popup_warn(); renderWarningMessageInLoginStatus(oauth, 'Not authorized'); } else { - //hide_popup_warn(); replace_content('login-status', '

Login failed

'); } return false; } - + check_version() hide_popup_warn() replace_content('outer', format('layout', {})) var user_login_session_timeout = parseInt(user.login_session_timeout) @@ -1862,3 +1860,12 @@ function get_chart_range_type(arg) { console.log('[WARNING]: range type not found for arg: ' + arg); return 'basic'; } + +function check_version() { + let curVersion = sync_get('/version') + let storedVersion = get_pref('version') + if (!storedVersion || storedVersion != curVersion) { + store_pref('version', curVersion) + location.reload() + } +} diff --git a/deps/rabbitmq_management/priv/www/js/oidc-oauth/helper.js b/deps/rabbitmq_management/priv/www/js/oidc-oauth/helper.js index 12c8c99a00..be84377e22 100644 --- a/deps/rabbitmq_management/priv/www/js/oidc-oauth/helper.js +++ b/deps/rabbitmq_management/priv/www/js/oidc-oauth/helper.js @@ -290,18 +290,26 @@ export function oauth_completeLogin() { export function oauth_initiateLogout() { if (oauth.sp_initiated) { - mgr.metadataService.getEndSessionEndpoint().then(endpoint => { - if (endpoint == undefined) { - // Logout only from management UI - mgr.removeUser().then(res => { - clear_auth() - oauth_redirectToLogin() + return mgr.getUser().then(user => { + if (user != null) { + mgr.metadataService.getEndSessionEndpoint().then(endpoint => { + if (endpoint == undefined) { + // Logout only from management UI + mgr.removeUser().then(res => { + clear_auth() + oauth_redirectToLogin() + }) + }else { + // OpenId Connect RP-Initiated Logout + mgr.signoutRedirect() + } }) }else { - // OpenId Connect RP-Initiated Logout - mgr.signoutRedirect() + clear_auth() + go_to_home() } }) + } else { go_to_authority() } @@ -370,8 +378,7 @@ export function hasAnyResourceServerReady(oauth, onReadyCallback) { return group; }, {}) let warnings = [] - for(var url in groupByProviderURL){ - console.log(url + ': ' + groupByProviderURL[url]); + for(var url in groupByProviderURL){ const notReadyResources = groupByProviderURL[url].filter((oauthserver) => notReadyServers.includes(oauthserver.oauth_provider_url)) const notCompliantResources = groupByProviderURL[url].filter((oauthserver) => notCompliantServers.includes(oauthserver.oauth_provider_url)) if (notReadyResources.length == 1) { @@ -385,7 +392,6 @@ export function hasAnyResourceServerReady(oauth, onReadyCallback) { warnings.push(warningMessageOAuthResources(url, notCompliantResources, " not compliant")) } } - console.log("warnings:" + warnings) oauth.declared_resource_servers_count = oauth.resource_servers.length oauth.resource_servers = oauth.resource_servers.filter((resource) => !notReadyServers.includes(resource.oauth_provider_url) && !notCompliantServers.includes(resource.oauth_provider_url)) diff --git a/deps/rabbitmq_management/src/rabbit_mgmt_dispatcher.erl b/deps/rabbitmq_management/src/rabbit_mgmt_dispatcher.erl index 2945984ecb..2af24db4ff 100644 --- a/deps/rabbitmq_management/src/rabbit_mgmt_dispatcher.erl +++ b/deps/rabbitmq_management/src/rabbit_mgmt_dispatcher.erl @@ -208,5 +208,6 @@ dispatcher() -> {"/auth/attempts/:node/source", rabbit_mgmt_wm_auth_attempts, [by_source]}, {"/login", rabbit_mgmt_wm_login, []}, {"/config/effective", rabbit_mgmt_wm_environment, []}, - {"/auth/hash_password/:password", rabbit_mgmt_wm_hash_password, []} + {"/auth/hash_password/:password", rabbit_mgmt_wm_hash_password, []}, + {"/version", rabbit_mgmt_wm_version, []} ]. diff --git a/deps/rabbitmq_management/src/rabbit_mgmt_headers.erl b/deps/rabbitmq_management/src/rabbit_mgmt_headers.erl index b4d348d74d..573f1ef776 100644 --- a/deps/rabbitmq_management/src/rabbit_mgmt_headers.erl +++ b/deps/rabbitmq_management/src/rabbit_mgmt_headers.erl @@ -55,14 +55,18 @@ set_common_permission_headers(ReqData0, EndpointModule) -> lists:foldl(fun(Fun, ReqData) -> Fun(ReqData, EndpointModule) end, ReqData0, - [fun set_csp_headers/2, + [fun set_etag_based_cache_headers/2, + fun set_csp_headers/2, fun set_hsts_headers/2, fun set_cors_headers/2, fun set_content_type_options_header/2, fun set_xss_protection_header/2, fun set_frame_options_header/2]). +set_etag_based_cache_headers(ReqData0, _Module) -> + cowboy_req:set_resp_header(<<"cache-control">>, <<"public, max-age=0, must-revalidate">>, ReqData0). + set_no_cache_headers(ReqData0, _Module) -> - ReqData1 = cowboy_req:set_resp_header(<<"cache-control">>, <<"no-cache, no-store, must-revalidate">>, ReqData0), + ReqData1 = cowboy_req:set_resp_header(<<"cache-control">>, <<"no-cache, no-store, max-age=0, must-revalidate">>, ReqData0), ReqData2 = cowboy_req:set_resp_header(<<"pragma">>, <<"no-cache">>, ReqData1), cowboy_req:set_resp_header(<<"expires">>, rabbit_data_coercion:to_binary(0), ReqData2). diff --git a/deps/rabbitmq_management/src/rabbit_mgmt_wm_version.erl b/deps/rabbitmq_management/src/rabbit_mgmt_wm_version.erl new file mode 100644 index 0000000000..d5f76aaebf --- /dev/null +++ b/deps/rabbitmq_management/src/rabbit_mgmt_wm_version.erl @@ -0,0 +1,38 @@ +%% This Source Code Form is subject to the terms of the Mozilla Public +%% License, v. 2.0. If a copy of the MPL was not distributed with this +%% file, You can obtain one at https://mozilla.org/MPL/2.0/. +%% +%% Copyright (c) 2007-2024 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. All rights reserved. +%% + +-module(rabbit_mgmt_wm_version). + +-export([init/2]). +-export([to_json/2, content_types_provided/2]). +-export([variances/2]). + +-include_lib("rabbit_common/include/rabbit.hrl"). +-include_lib("rabbitmq_management_agent/include/rabbit_mgmt_records.hrl"). + +%%-------------------------------------------------------------------- + +init(Req, _State) -> + {cowboy_rest, rabbit_mgmt_headers:set_no_cache_headers( + rabbit_mgmt_headers:set_common_permission_headers(Req, ?MODULE), ?MODULE), + #context{}}. + +variances(Req, Context) -> + {[<<"accept-encoding">>, <<"origin">>], Req, Context}. + +content_types_provided(ReqData, Context) -> + {rabbit_mgmt_util:responder_map(to_json), ReqData, Context}. + +to_json(ReqData, Context) -> + Version = case rabbit:product_version() of + undefined -> rabbit:base_product_version(); + V -> V + end, + rabbit_mgmt_util:reply(list_to_binary(Version), ReqData, Context). + +%%-------------------------------------------------------------------- + diff --git a/deps/rabbitmq_management/test/rabbit_mgmt_http_SUITE.erl b/deps/rabbitmq_management/test/rabbit_mgmt_http_SUITE.erl index 4da66ae236..3acd6eb02a 100644 --- a/deps/rabbitmq_management/test/rabbit_mgmt_http_SUITE.erl +++ b/deps/rabbitmq_management/test/rabbit_mgmt_http_SUITE.erl @@ -56,7 +56,7 @@ all() -> ]. groups() -> - [ + [ {all_tests_with_prefix, [], some_tests() ++ all_tests()}, {all_tests_without_prefix, [], some_tests()}, %% We have several groups because their interference is @@ -104,7 +104,6 @@ definitions_group4_tests() -> definitions_vhost_test ]. - all_tests() -> [ cli_redirect_test, api_redirect_test, @@ -205,7 +204,8 @@ all_tests() -> [ amqp_sessions, amqpl_sessions, enable_plugin_amqp, - cluster_and_node_tags_test + cluster_and_node_tags_test, + version_test ]. %% ------------------------------------------------------------------- @@ -3896,6 +3896,13 @@ oauth_test(Config) -> %% cleanup rpc(Config, application, unset_env, [rabbitmq_management, oauth_enabled]). +version_test(Config) -> + ActualVersion = http_get(Config, "/version"), + ct:log("ActualVersion : ~p", [ActualVersion]), + ExpectedVersion = rpc(Config, rabbit, base_product_version, []), + ct:log("ExpectedVersion : ~p", [ExpectedVersion]), + ?assertEqual(ExpectedVersion, binary_to_list(ActualVersion)). + login_test(Config) -> http_put(Config, "/users/myuser", [{password, <<"myuser">>}, {tags, <<"management">>}], {group, '2xx'}), diff --git a/selenium/README.md b/selenium/README.md index 131c0a3706..c64a16403d 100644 --- a/selenium/README.md +++ b/selenium/README.md @@ -62,6 +62,9 @@ not see any browser interaction, everything happens in the background, i.e. rabb **The interactive mode** - This mode is convenient when we are still working on RabbitMQ source code and/or in the selenium tests. In this mode, you run RabbitMQ and tests directly from source to speed things up. The components, such as, UAA or keycloak, run in docker. +**IMPORTANT** - If you intend to switch between version of RabbitMQ, make sure +you run `./clean.sh` to clear any state left from the last test run. + ## Run tests in headless-mode diff --git a/selenium/bin/components/keycloak b/selenium/bin/components/keycloak index a632f6560b..f77df9f6f1 100644 --- a/selenium/bin/components/keycloak +++ b/selenium/bin/components/keycloak @@ -42,7 +42,7 @@ start_keycloak() { --publish 8443:8443 \ --env KEYCLOAK_ADMIN=admin \ --env KEYCLOAK_ADMIN_PASSWORD=admin \ - --mount type=bind,source=${MOUNT_KEYCLOAK_CONF_DIR},target=/opt/keycloak/data/import/ \ + -v ${MOUNT_KEYCLOAK_CONF_DIR}:/opt/keycloak/data/import/ \ ${KEYCLOAK_DOCKER_IMAGE} start-dev --import-realm \ --https-certificate-file=/opt/keycloak/data/import/server_keycloak_certificate.pem \ --https-certificate-key-file=/opt/keycloak/data/import/server_keycloak_key.pem diff --git a/selenium/bin/suite_template b/selenium/bin/suite_template index ecad529b19..33566190cb 100644 --- a/selenium/bin/suite_template +++ b/selenium/bin/suite_template @@ -571,7 +571,7 @@ teardown_local_others() { if [[ $REQUIRED_COMPONENTS == "" ]]; then print "There are no other components" else - teardown_components + teardown_components true fi } test_local() { @@ -624,13 +624,18 @@ start_components() { } teardown_components() { - begin "Tear down ..." + skip_rabbitmq=${1:-false} + + begin "Tear down ... " for i in "${REQUIRED_COMPONENTS[@]}" do - local component="$i" - stop="stop_$i" - type "$stop" &>/dev/null && $stop || kill_container_if_exist "$component" - print "Tear down $component" + if [[ $i != "rabbitmq" || ($i == "rabbitmq" && $skip_rabbitmq == false) ]] + then + local component="$i" + stop="stop_$i" + type "$stop" &>/dev/null && $stop || kill_container_if_exist "$component" + print "Tear down $component" + fi done end "Finished teardown" } diff --git a/selenium/clean.sh b/selenium/clean.sh new file mode 100755 index 0000000000..a113a5978b --- /dev/null +++ b/selenium/clean.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +rm -r $TMPDIR/rabbitmq-test-instances diff --git a/selenium/suites/authnz-mgt/oauth-and-basic-auth.sh b/selenium/suites/authnz-mgt/oauth-and-basic-auth.sh index 07aa42fb04..ea31d4bbd2 100755 --- a/selenium/suites/authnz-mgt/oauth-and-basic-auth.sh +++ b/selenium/suites/authnz-mgt/oauth-and-basic-auth.sh @@ -4,7 +4,7 @@ SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" TEST_CASES_PATH=/oauth/with-basic-auth TEST_CONFIG_PATH=/oauth -PROFILES="keycloak jwks keycloak-oauth-provider enable-basic-auth tls" +PROFILES="keycloak keycloak-oauth-provider keycloak-mgt-oauth-provider tls enable-basic-auth" source $SCRIPT/../../bin/suite_template $@ runWith keycloak diff --git a/selenium/test/basic-auth/unauthorized.js b/selenium/test/basic-auth/unauthorized.js index 2399817f57..ceae65d8b1 100644 --- a/selenium/test/basic-auth/unauthorized.js +++ b/selenium/test/basic-auth/unauthorized.js @@ -19,9 +19,8 @@ describe('An user without management tag', function () { overview = new OverviewPage(driver) captureScreen = captureScreensFor(driver, __filename) - assert.ok(!await login.isPopupWarningDisplayed()) - await login.login('rabbit_no_management', 'rabbit_no_management') - await !overview.isLoaded() + //assert.ok(!await login.isPopupWarningDisplayed()) + await login.login('rabbit_no_management', 'guest') }) it('cannot log in into the management ui', async function () { @@ -35,7 +34,7 @@ describe('An user without management tag', function () { it('should get popup warning dialog', async function(){ assert.ok(login.isPopupWarningDisplayed()) - assert.equal('Not_Authorized', await login.getPopupWarning()) + assert.equal('Not management user', await login.getPopupWarning()) }) describe("After clicking on popup warning dialog button", function() { diff --git a/selenium/test/multi-oauth/certs/server_rabbitmq_certificate.pem b/selenium/test/multi-oauth/certs/server_rabbitmq_certificate.pem deleted file mode 100644 index bba7df99d6..0000000000 --- a/selenium/test/multi-oauth/certs/server_rabbitmq_certificate.pem +++ /dev/null @@ -1,22 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDujCCAqKgAwIBAgIBATANBgkqhkiG9w0BAQsFADBLMTowOAYDVQQDDDFUTFNH -ZW5TZWxmU2lnbmVkUm9vdENBIDIwMjQtMTEtMTRUMTQ6MDc6NTQuNzIzODUyMQ0w -CwYDVQQHDAQkJCQkMB4XDTI0MTExNDEzMDc1NFoXDTM0MTExMjEzMDc1NFowJDER -MA8GA1UEAwwIcmFiYml0bXExDzANBgNVBAoMBnNlcnZlcjCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBAO+lLX4hl6pBOi8BNxOka5dxBblSIDUfES3yHwL2 -g/BoJv18DiBpLlT7262iUvrZk7WsGUdUccoikR8L9eArw04K8I8z7ATOMN7T/d8R -4Kn1Rcbgrm11d2xS4R9gXy7lbhOCk8LWHJtWptDyPhg6I8SztHB7dtvzv1AVvmtp -4QDYKN7YCJnF3+Uf9W2XJcH/rBU2mc0ow2EbTLoJug335bhIWJ7TVPS22BDy5xnP -7MDG14PMU/W9BhN5GzCEqeJzwhXjqij/JfGICHBJeGzqQ+J9Qjm3DYdGoCheZqxP -R1ml7ql14tBUIbgcJjlRCLSyaMLEOOOoLOrac5T/zT5YsV8CAwEAAaOBzzCBzDAJ -BgNVHRMEAjAAMAsGA1UdDwQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATAqBgNV -HREEIzAhgghyYWJiaXRtcYIKV0pSN0Q0RkhHWIIJbG9jYWxob3N0MB0GA1UdDgQW -BBTEYcfPgofNbHR6lT4AtYpmhDwa7DAfBgNVHSMEGDAWgBQlM1NJapUaVlk0O7o6 -p7NnIKxtcTAxBgNVHR8EKjAoMCagJKAihiBodHRwOi8vY3JsLXNlcnZlcjo4MDAw -L2Jhc2ljLmNybDANBgkqhkiG9w0BAQsFAAOCAQEAQ8lsUSlA50+RqyRr6kopSNxh -ytQ/qKLmCZk8kveUkNVJK0VXRgo7ufINBrPVPlli4kofTv7FLizbm9dRYn22cskm -LcUqOBoAgXQuevqM2sn/WEpybYH6HL3ETFol+/8r5zVTlrWFLOMEIlHFBIWs+LOr -Zv5uNLfxqOBtG7ClCKB5oqnvRrL7Re5klMTPdSLoayiegk641SfxVeuyHYBe74LD -HOV4NLUW7xm55A3FXW0mdUT1YbsKdCXM6q7Krkomq16s5c4sJtYDk+zGLOMdA6lT -00Jaz74RbWwvpbpoW5XGeldn4T02CXOWVTXp0Ur+Br/PdsiKdmkrNos9ecBuvg== ------END CERTIFICATE----- diff --git a/selenium/test/multi-oauth/certs/server_rabbitmq_key.pem b/selenium/test/multi-oauth/certs/server_rabbitmq_key.pem deleted file mode 100644 index 40387b485d..0000000000 --- a/selenium/test/multi-oauth/certs/server_rabbitmq_key.pem +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDvpS1+IZeqQTov -ATcTpGuXcQW5UiA1HxEt8h8C9oPwaCb9fA4gaS5U+9utolL62ZO1rBlHVHHKIpEf -C/XgK8NOCvCPM+wEzjDe0/3fEeCp9UXG4K5tdXdsUuEfYF8u5W4TgpPC1hybVqbQ -8j4YOiPEs7Rwe3bb879QFb5raeEA2Cje2AiZxd/lH/VtlyXB/6wVNpnNKMNhG0y6 -CboN9+W4SFie01T0ttgQ8ucZz+zAxteDzFP1vQYTeRswhKnic8IV46oo/yXxiAhw -SXhs6kPifUI5tw2HRqAoXmasT0dZpe6pdeLQVCG4HCY5UQi0smjCxDjjqCzq2nOU -/80+WLFfAgMBAAECggEAH8tjcMOWMrF6vbfEjeeXmr0VDFRYD5QynEzuTl9Ue/Xl -jmYCHcy2p/HOYIgTyFJLpaPSqsMKYc4aQOs+UOKdg+Ixrl4uJykQFNA9c3YUv5fa -DRvMKJuYH5gTZC1OE5O++fmuDwCHRRjHAxvQnzg/fJ53ByFqUJ5TOJXZ8LhYcNr7 -P47OfZJb9t81YsrYPL6ZsRxw2a5Fc1C/Za2Wn7ZZbr4xx8CuBJ8WwQQWM+NjhHfD -Kb3I3n2sWzyy1JhGcQCHix/nQnrIMCZ3TDemwTIegvAKkHt+estvgWlxVOCBHb86 -lZrhweuMWCzwuRJhvKZ2Up71fMmyw6chZJwR2AHaIQKBgQD5G4ZuEckodnIlH6jU -9ps2AX114xNSnDBGOFn1pCE6gXQFtdLWvIyKpeQnFN9JUZoaQ2lp+pPQ+21O6ZXW -z/5LGp6N0HZDFKOm3Fu9RqEiI4TM5w9EnUjRoqhD8qKjk3ym97raVEvjFlMycqs8 -3L5oRGFCHIWreDA6zaSpQq2cEQKBgQD2RqEgKIKxNpYicroVkaGwLM3W3E0corNM -vj/oS2zwBJUgH7iwtDO+CBPd2FFQjwXi7DZwMzP1UyKOBxHUiTrFODtLj1NPp2BZ -X29HEDy3QHh1TrVb2gG+Psll/cdurq+G2knJqSDwWnAoVHe5jxt0jWxaVFWKzNl5 -pcc9Lu+mbwKBgQCU/RZ47KBQWA9LDtVukhQgx+FeybJ73TiuNvPvC/xnvpdC9w2k -K18vaaq8iSpG8sxlWt5IaXtRKZ+l6+UXdo0UJFaiYQTqeAStPuyLlxu2jGHYH3Yt -RpkP8OYMxajqhsKuJkqWXIaKyoZ2DMlH/IrRV9yHqwFznc3Szb3nEh890QKBgQCL -7BcRgVK3ws7MJajKJmLaCKquf54kPeBnItSGc4wiVkgv5zX0131qY4Z+DbAteAUd -J53KY50KrkA8t5GO0qUcdlViGb14zRz1yj4b/wKwDyYhaCWsWRGSeHPOycAsh31c -vdscg0YeqRN+Jnebas5riwpby/yKDtckwWaQwYERawKBgQDMqdNh0NqX+VyW786f -M45xgL61jMwO3FNPatQsj329WJ9PfHQprryR4zzNZ9XswENKVM7jLq3koJkHYVs/ -wk23Zn3daJxYqoftEdYxW2azsouHV7/kMT+kiUjr4pcaxGhWjRjANDgEcYkMz3g6 -Uuot3qdOvr7IW0O0vRGvmd6Ojw== ------END PRIVATE KEY----- diff --git a/selenium/test/multi-oauth/devkeycloak/server_devkeycloak.p12 b/selenium/test/multi-oauth/devkeycloak/server_devkeycloak.p12 deleted file mode 100644 index e106d72dcd27cf713a382508365827518d12a62d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3683 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 diff --git a/selenium/test/multi-oauth/prodkeycloak/server_prodkeycloak_certificate.pem b/selenium/test/multi-oauth/prodkeycloak/server_prodkeycloak_certificate.pem deleted file mode 100644 index 1e3fd2ef73..0000000000 --- a/selenium/test/multi-oauth/prodkeycloak/server_prodkeycloak_certificate.pem +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDwjCCAqqgAwIBAgIBATANBgkqhkiG9w0BAQsFADBLMTowOAYDVQQDDDFUTFNH -ZW5TZWxmU2lnbmVkUm9vdENBIDIwMjQtMTEtMTRUMTQ6MDc6MTIuMTg2NTg4MQ0w -CwYDVQQHDAQkJCQkMB4XDTI0MTExNDEzMDcxMloXDTM0MTExMjEzMDcxMlowKDEV -MBMGA1UEAwwMcHJvZGtleWNsb2FrMQ8wDQYDVQQKDAZzZXJ2ZXIwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDB1c4MHWnuqDBZ6VMYyk16W5qVKmoQnm9c -bjXC5hkmUU7BitYjthT+udt5dtzcbPo0bJf9/YNsfG00EsT/8/rUufU6K3Uor6Dj -4r8Q1e/rm19KNChe79iJ7VzYu9yh/mVujVkLF51OgcKDFe7eDAGxhhpp9yG9WbWe -BG8Ueoqh4uIHekFE5+LizbjgDOrYwna8XXhThyJQqnAV+SL4GwkVe38S902Mf78Z -vnrWfUSuo0ZOigJr+7s2R4/nsvoCC8Ec6cMiJApqJ+9JED9/nLcCPSsdh4exD+cJ -dWOe7Jd1HyfjcQ5dGF6a8NS+o8JUzI2H6d961Q3hvzD44v4SgbYZAgMBAAGjgdMw -gdAwCQYDVR0TBAIwADALBgNVHQ8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEw -LgYDVR0RBCcwJYIMcHJvZGtleWNsb2FrggpXSlI3RDRGSEdYgglsb2NhbGhvc3Qw -HQYDVR0OBBYEFHAbzqd72oqgHN5VZaJA94OxbVHxMB8GA1UdIwQYMBaAFPsm2Wgu -4Sjb0Z7Bb48ZuwAJA7VnMDEGA1UdHwQqMCgwJqAkoCKGIGh0dHA6Ly9jcmwtc2Vy -dmVyOjgwMDAvYmFzaWMuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA+GaPVxIP2BUH4 -DUSiuLr3NB04qWFEhTC4dros6ebU0B9q9VwNdns7TsnTf1K0c3MEv7Q9lgBq1sds -PUP+oOygF/xunjup0a2Z4Dl13YWC8D/gsWMK5Lfhczjk9RFNRnzkysMfajXk5oA8 -i7Ne8Cw+ROzbNfP7b9d2KLYctfxTsUf9r52RFLyhDbDzhaZvpmeyBfq4VIUpi6Sa -vE+MaDgJzg2FnS3EoSBELcPvy0Vhdqy+DnbCviIdJm8U39Ht4ygFJnSbCV1c7xjv -64YKSPV7jECeDLhdo2rLNhiiN+5NLJvrC/Mj4919Etngr9oIyfX9TToNVTKtp3JT -HU3R+2KE ------END CERTIFICATE----- diff --git a/selenium/test/multi-oauth/prodkeycloak/server_prodkeycloak_key.pem b/selenium/test/multi-oauth/prodkeycloak/server_prodkeycloak_key.pem deleted file mode 100644 index 3f92f69406..0000000000 --- a/selenium/test/multi-oauth/prodkeycloak/server_prodkeycloak_key.pem +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDB1c4MHWnuqDBZ -6VMYyk16W5qVKmoQnm9cbjXC5hkmUU7BitYjthT+udt5dtzcbPo0bJf9/YNsfG00 -EsT/8/rUufU6K3Uor6Dj4r8Q1e/rm19KNChe79iJ7VzYu9yh/mVujVkLF51OgcKD -Fe7eDAGxhhpp9yG9WbWeBG8Ueoqh4uIHekFE5+LizbjgDOrYwna8XXhThyJQqnAV -+SL4GwkVe38S902Mf78ZvnrWfUSuo0ZOigJr+7s2R4/nsvoCC8Ec6cMiJApqJ+9J -ED9/nLcCPSsdh4exD+cJdWOe7Jd1HyfjcQ5dGF6a8NS+o8JUzI2H6d961Q3hvzD4 -4v4SgbYZAgMBAAECggEAUQs9gvg7ZfNBgB5bxZY0TdAGMo8Q2ND9m8ZiyRIe+tPt -G2Qaw8SqQ5TfDIqjrrAL7yZmaGZ6cD4YBLlCUAgpXI9B1qf77N595TpVi8r/bOHC -NkrXhFZBEe5CL0Zg6gRtUYtc6xPdDEmZ0+g0PvgDLz/0RFD1dO+Qzbhp30SbOTLh -pZRMkz8KtjnwMKN8HJKsQctMVthnAfU5FW77+xpynovT9qs/zbZCcxGm/FMXc1VI -Dxmy3yaztGLYD1amON7BdL7rYnfFvEbg+mhrc5tNvFN2KeQCpjdOmeRyuIG8VWJr -u/P1O4ho1iWA5bhslhw1bbZh8JdR80uSL4q17x4WLwKBgQD6VApTzjW56KVu8RPs -qup+7hLI81X6IT9naXwUTmfuHPj6ak5xoyKmnTYgA9RWL6em7KkK6o+OVwO0Gxlr -tBGu2++QQjCNQjhzujgmlglk/oDh5HSys60g+BKkExpyk27rZHuvcduBmLuBvn3g -Rr/0PzJPH5LzpfxyzH0pFbiHtwKBgQDGOheKeWUUaDOxMi5rrY2+NGHJtzrLkbHn -9ss7Xb7OCOzZsw+AUnxIxTd9Ysloj9bhG7pRIn8xgofJ7z6m+mTVwF0+GwlhmrZd -U9U1BOxkzR8q744tO5bGrF5wtGyMydILwJjz1tw9OiEwy58C1Ad5WOZt7Lu9/Rhn -qQrdHyqQrwKBgHF9SHFWO+VdJCN4CKBznHyPUtTn/UK5cBViLW7HXTcGy5o8N/Qt -EbiX7cH1+n5YfJmhEcJxNURDDtrIrm215Y5xB9tPJtPkAdP1yR81Rm0TNTs0Z/Pc -odEgptLcFlF7pf3yQGD6LZpDtD7OLiNP8Ba70AMvPWBZEGq7asMFpfNhAoGAMQ6R -YuC2Jj2/hTvRBy71ZDwcc0pYT6bn62tFUpTZsq28yAerb2t6fJvqJqq7A5iNajpt -esTZy4vtRQljbPmM2OV5bfRM9w3N0fz8R9nHEw88hmiwu/sCTnq8CJJuRs1voR7x -+26SJMjtC+Fooc+NZfedV1j+AX/QeV75ZE3hP9sCgYEAsHtQuviAZ6LKKp3N6wrZ -NnCvzF4sZhGBp32v07bVba0AN/omG39ab5SRp2G5+rtO7uyisOfonmeoOTQauYOb -NcnsjJ++ZQ1PKaSV8cxMRdbbAup6XwBps+CXLAGLGhF4LGd0sKVa0aBpmFfmk7Qs -A4LC20RdtOiu1s5krdmXQvg= ------END PRIVATE KEY----- diff --git a/selenium/test/oauth/with-basic-auth-idp-down/happy-login.js b/selenium/test/oauth/with-basic-auth-idp-down/happy-login.js index 73d1ccd4a6..3a7d2baafb 100644 --- a/selenium/test/oauth/with-basic-auth-idp-down/happy-login.js +++ b/selenium/test/oauth/with-basic-auth-idp-down/happy-login.js @@ -1,32 +1,30 @@ const { By, Key, until, Builder } = require('selenium-webdriver') require('chromedriver') const assert = require('assert') -const { buildDriver, goToHome, captureScreensFor, teardown, idpLoginPage } = require('../../utils') +const { buildDriver, goToHome, captureScreensFor, teardown, delay } = require('../../utils') const SSOHomePage = require('../../pageobjects/SSOHomePage') const OverviewPage = require('../../pageobjects/OverviewPage') describe('When basic authentication is enabled but UAA is down', function () { let homePage - let idpLogin let overview let captureScreen before(async function () { driver = buildDriver() await goToHome(driver) - homePage = new SSOHomePage(driver) - idpLogin = idpLoginPage(driver) + homePage = new SSOHomePage(driver) overview = new OverviewPage(driver) captureScreen = captureScreensFor(driver, __filename) }) it('can log in with Basic Auth', async function () { await homePage.toggleBasicAuthSection() + assert.ok(await homePage.isLoginButtonVisible) await homePage.basicAuthLogin('guest', 'guest') - if (!await overview.isLoaded()) { - throw new Error('Failed to login') - } + await overview.isLoaded() + assert.equal(await overview.getUser(), 'User guest') await overview.logout() }) diff --git a/selenium/test/pageobjects/BasePage.js b/selenium/test/pageobjects/BasePage.js index b226501730..b543115208 100644 --- a/selenium/test/pageobjects/BasePage.js +++ b/selenium/test/pageobjects/BasePage.js @@ -1,4 +1,4 @@ -const { By, Key, until, Builder, Select } = require('selenium-webdriver') +const { By, Key, until, Builder, Select, WebDriverError, NoSuchSessionError } = require('selenium-webdriver') const MENU_TABS = By.css('div#menu ul#tabs') const USER = By.css('li#logout') @@ -185,7 +185,9 @@ module.exports = class BasePage { 'Timed out after [timeout=' + this.timeout + ';polling=' + this.polling + '] seconds locating ' + locator, this.polling) }catch(error) { - console.error("Failed to locate element " + locator) + if (!error.name.includes("NoSuchSessionError")) { + console.error("Failed waitForLocated " + locator + " due to " + error) + } throw error } } @@ -195,8 +197,10 @@ module.exports = class BasePage { return this.driver.wait(until.elementIsVisible(element), this.timeout, 'Timed out after [timeout=' + this.timeout + ';polling=' + this.polling + '] awaiting till visible ' + element, this.polling) - }catch(error) { - console.error("Failed to find visible element " + element) + }catch(error) { + if (!error.name.includes("NoSuchSessionError")) { + console.error("Failed to find visible element " + element + " due to " + error) + } throw error } } @@ -207,7 +211,9 @@ module.exports = class BasePage { try { return this.waitForVisible(await this.waitForLocated(locator)) }catch(error) { - console.error("Failed to waitForDisplayed for locator " + locator) + if (!error.name.includes("NoSuchSessionError")) { + console.error("Failed to waitForDisplayed " + locator + " due to " + error) + } throw error } } diff --git a/selenium/test/pageobjects/SSOHomePage.js b/selenium/test/pageobjects/SSOHomePage.js index 4bb074a525..38ef6f3af3 100644 --- a/selenium/test/pageobjects/SSOHomePage.js +++ b/selenium/test/pageobjects/SSOHomePage.js @@ -87,8 +87,11 @@ module.exports = class SSOHomePage extends BasePage { async basicAuthLogin (username, password) { await this.isLoaded() + await this.waitForDisplayed(BASIC_AUTH_LOGIN_USERNAME) await this.sendKeys(BASIC_AUTH_LOGIN_USERNAME, username) + await this.waitForDisplayed(BASIC_AUTH_LOGIN_PASSWORD) await this.sendKeys(BASIC_AUTH_LOGIN_PASSWORD, password) + await this.waitForDisplayed(BASIC_AUTH_LOGIN_FORM) return this.submit(BASIC_AUTH_LOGIN_FORM) }