blob: 2dd2cb465d742e9be87aea3e13bad9589b36b604 [file] [log] [blame]
#!/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