| #!/usr/bin/env bash |
| |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one or more |
| # contributor license agreements. See the NOTICE file distributed with |
| # this work for additional information regarding copyright ownership. |
| # The ASF licenses this file to You under the Apache License, Version 2.0 |
| # (the "License"); you may not use this file except in compliance with |
| # the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| |
| . ./t/cli/common.sh |
| |
| # check admin ui enabled |
| |
| git checkout conf/config.yaml |
| |
| make init |
| |
| grep "location ^~ /ui/" conf/nginx.conf > /dev/null |
| if [ ! $? -eq 0 ]; then |
| echo "failed: failed to enable embedded admin ui" |
| exit 1 |
| fi |
| |
| make run |
| |
| ## check /ui redirects to /ui/ with 301 |
| code=$(curl -v -k -i -m 20 -o /dev/null -s -w %{http_code} http://127.0.0.1:9180/ui) |
| if [ ! $code -eq 301 ]; then |
| echo "failed: failed to redirect /ui to /ui/" |
| exit 1 |
| fi |
| |
| ## check /ui redirects to /ui/ with correct Location header |
| location_header=$(curl -k -i -m 20 -s http://127.0.0.1:9180/ui | grep -i '^Location:' | awk -F': ' '{print $2}' | tr -d '\r') |
| |
| if [ "${location_header}" != "/ui/" ]; then |
| echo "failed: incorrect redirect Location header when accessing /ui, expected /ui/, got ${location_header}" |
| exit 1 |
| fi |
| |
| ## check /ui/ accessible |
| |
| mkdir -p ui/assets |
| echo "test_html" > ui/index.html |
| echo "test_js" > ui/assets/test.js |
| echo "test_css" > ui/assets/test.css |
| |
| code=$(curl -v -k -i -m 20 -o /dev/null -s -w %{http_code} http://127.0.0.1:9180/ui/) |
| if [ ! $code -eq 200 ]; then |
| echo "failed: /ui/ not accessible" |
| exit 1 |
| fi |
| |
| ## check /ui/index.html accessible |
| |
| code=$(curl -v -k -i -m 20 -o /dev/null -s -w %{http_code} http://127.0.0.1:9180/ui/index.html) |
| if [ ! $code -eq 200 ]; then |
| echo "failed: /ui/index.html not accessible" |
| exit 1 |
| fi |
| |
| ## check /ui/assets/test.js accessible |
| |
| code=$(curl -v -k -i -m 20 -o /dev/null -s -w %{http_code} http://127.0.0.1:9180/ui/assets/test.js) |
| if [ ! $code -eq 200 ]; then |
| echo "failed: /ui/assets/test.js not accessible" |
| exit 1 |
| fi |
| |
| ## check /ui/assets/test.css accessible |
| |
| code=$(curl -v -k -i -m 20 -o /dev/null -s -w %{http_code} http://127.0.0.1:9180/ui/assets/test.css) |
| if [ ! $code -eq 200 ]; then |
| echo "failed: /ui/assets/test.css not accessible" |
| exit 1 |
| fi |
| |
| ## check /ui/ single-page-application fallback |
| |
| code=$(curl -v -k -i -m 20 -o /dev/null -s -w %{http_code} http://127.0.0.1:9180/ui/not_exist) |
| if [ ! $code -eq 200 ]; then |
| echo "failed: /ui/not_exist not accessible" |
| exit 1 |
| fi |
| |
| make stop |
| |
| # test ip restriction |
| |
| git checkout conf/config.yaml |
| |
| echo " |
| deployment: |
| admin: |
| enable_admin_ui: true |
| allow_admin: |
| - 1.1.1.1/32 |
| " > conf/config.yaml |
| |
| make run |
| |
| code=$(curl -v -k -i -m 20 -o /dev/null -s -w %{http_code} http://127.0.0.1:9180/ui/) |
| if [ ! $code -eq 403 ]; then |
| echo "failed: ip restriction not working, expected 403, got $code" |
| exit 1 |
| fi |
| |
| make stop |
| |
| # test admin ui disabled |
| |
| git checkout conf/config.yaml |
| |
| echo " |
| deployment: |
| admin: |
| enable_admin_ui: false |
| " > conf/config.yaml |
| |
| make init |
| |
| #### When grep cannot find the value, it uses 1 as the exit code. |
| #### Due to the use of set -e, any non-zero exit will terminate the |
| #### script, so grep is written inside the if statement here. |
| if grep "location ^~ /ui/" conf/nginx.conf > /dev/null; then |
| echo "failed: failed to disable embedded admin ui" |
| exit 1 |
| fi |
| |
| # test admin UI explicitly enabled |
| |
| git checkout conf/config.yaml |
| |
| echo " |
| deployment: |
| admin: |
| enable_admin_ui: true |
| " > conf/config.yaml |
| |
| make init |
| |
| if ! grep "location ^~ /ui/" conf/nginx.conf > /dev/null; then |
| echo "failed: failed to explicitly enable embedded admin ui" |
| exit 1 |
| fi |