raise SkipTest unless $node["services"].include?("webapp") require 'socket' class Webapp < LeapTest depends_on "Network" HAPROXY_CONFIG = '/etc/haproxy/haproxy.cfg' def setup end # # example properties: # # stunnel: # clients: # couch_client: # couch1_5984: # accept_port: 4000 # connect: couch1.bitmask.i # connect_port: 15984 # def test_01_Can_contact_couchdb? assert_property('stunnel.clients.couch_client') $node['stunnel']['clients']['couch_client'].values.each do |stunnel_conf| assert port = stunnel_conf['accept_port'], 'Field `accept_port` must be present in `stunnel` property.' local_stunnel_url = "http://localhost:#{port}" remote_ip_address = TCPSocket.gethostbyname(stunnel_conf['connect']).last msg = "(stunnel to %s:%s, aka %s)" % [stunnel_conf['connect'], stunnel_conf['connect_port'], remote_ip_address] assert_get(local_stunnel_url, nil, error_msg: msg) do |body| assert_match /"couchdb":"Welcome"/, body, "Request to #{local_stunnel_url} should return couchdb welcome message." end end pass end # # example properties: # # haproxy: # servers: # couch1: # backup: false # host: localhost # port: 4000 # weight: 10 # def test_02_Is_haproxy_working? port = file_match(HAPROXY_CONFIG, /^ bind localhost:(\d+)$/) url = "http://localhost:#{port}" assert_get(url) do |body| assert_match /"couchdb":"Welcome"/, body, "Request to #{url} should return couchdb welcome message." end pass end def test_03_Are_daemons_running? assert_running '/usr/sbin/apache2' assert_running '/usr/bin/nickserver' pass end # # this is technically a black-box test. so, move this when we have support # for black box tests. # def test_04_Can_access_webapp? assert_get('https://' + $node['webapp']['domain'] + '/') pass end end