#!/bin/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. # # Script to test Debian installer within Docker container. # NAME="apacheds-${project.version}" DIRNAME="${NAME}" SERVICE_NAME="${NAME}-default" wait_for_apacheds() { timeout 30 sh -c "while ! nc -z localhost 10389; do sleep 1; done" } # stop execution if any command fails (i.e. exits with status code > 0) set -e # trace commands set -x # install dpkg -i /apacheds.deb # assert installed dpkg -l | grep apacheds # assert files and directories exist test -f /opt/${DIRNAME}/LICENSE test -f /opt/${DIRNAME}/NOTICE test -d /var/lib/${DIRNAME}/default # assert not running: output and exit status service ${SERVICE_NAME} status | grep "ApacheDS - default is not running" service ${SERVICE_NAME} status || test $? -ne 0 # install required tools apt-get -qq update apt-get -qq -y install ldap-utils netcat # start service ${SERVICE_NAME} start wait_for_apacheds # assert running: output and exit status service ${SERVICE_NAME} status | grep "ApacheDS - default is running" service ${SERVICE_NAME} status && test $? -eq 0 # search ldapsearch -h localhost -p 10389 -x -D "uid=admin,ou=system" -w secret -s base -b "dc=example,dc=com" # repair (stop before and start after) service ${SERVICE_NAME} stop service ${SERVICE_NAME} repair wait_for_apacheds service ${SERVICE_NAME} status | grep "ApacheDS - default is running" service ${SERVICE_NAME} status && test $? -eq 0 # restart and search a few times for i in 1 2 3 do service ${SERVICE_NAME} restart wait_for_apacheds ldapsearch -h localhost -p 10389 -x -D "uid=admin,ou=system" -w secret -s base -b "dc=example,dc=com" done # stop service ${SERVICE_NAME} stop # assert not running: output and exit status service ${SERVICE_NAME} status | grep "ApacheDS - default is not running" service ${SERVICE_NAME} status || test $? -ne 0 # assert password warning in log grep ".*WARN.*admin password.*security breach.*" /var/lib/${DIRNAME}/default/log/apacheds.log # assert no error in log ! grep ".*ERROR.*" /var/lib/${DIRNAME}/default/log/apacheds.log # uninstall dpkg -P apacheds # assert the backup file was created test -f /var/lib/${DIRNAME}*.tgz tar -tf /var/lib/${DIRNAME}*.tgz >> /dev/null # assert files and directory no more exist test ! -e /opt/${DIRNAME} test ! -e /var/lib/${DIRNAME}/default # SUCCESS echo "SUCCESS"