60 lines
1.3 KiB
Bash
60 lines
1.3 KiB
Bash
#!/usr/bin/env bats
|
|
CONTAINER_NAME=bitnami-ruby-test
|
|
IMAGE_NAME=bitnami/ruby
|
|
VOL_PREFIX=/bitnami/$CONTAINER_NAME
|
|
|
|
create_container(){
|
|
docker run -itd --name $CONTAINER_NAME $IMAGE_NAME
|
|
}
|
|
|
|
add_app() {
|
|
docker exec $CONTAINER_NAME sh -c "echo \"
|
|
require 'sinatra'
|
|
|
|
set :bind, '0.0.0.0'
|
|
set :port, 3000
|
|
|
|
get '/hi' do
|
|
'A Lanister always pays his debts'
|
|
end\" > /app/server.rb"
|
|
}
|
|
|
|
setup () {
|
|
create_container
|
|
}
|
|
|
|
teardown() {
|
|
if [ "$(docker ps -a | grep $CONTAINER_NAME)" ]; then
|
|
docker rm -fv $CONTAINER_NAME
|
|
fi
|
|
}
|
|
|
|
@test "ruby, gem and bundler installed" {
|
|
run docker exec $CONTAINER_NAME ruby -v
|
|
[ "$status" = 0 ]
|
|
run docker exec $CONTAINER_NAME gem -v
|
|
[ "$status" = 0 ]
|
|
run docker exec $CONTAINER_NAME bundle -v
|
|
[ "$status" = 0 ]
|
|
}
|
|
|
|
@test "can install gem modules with system requirements" {
|
|
run docker exec $CONTAINER_NAME sudo gem install nokogiri --no-ri --no-rdoc
|
|
[ "$status" = 0 ]
|
|
}
|
|
|
|
@test "all the volumes exposed" {
|
|
docker inspect $CONTAINER_NAME | {
|
|
run grep "\"Volumes\":" -A 1
|
|
[[ "$output" =~ "/app" ]]
|
|
}
|
|
}
|
|
|
|
@test "port 3000 exposed" {
|
|
add_app
|
|
docker exec -d $CONTAINER_NAME sh -c 'sudo gem install sinatra --no-ri --no-rdoc && ruby server.rb'
|
|
sleep 10
|
|
run docker run --rm --link $CONTAINER_NAME:ruby bitnami/ruby curl http://ruby:3000/hi
|
|
[[ "$output" =~ "A Lanister always pays his debts" ]]
|
|
}
|