=begin rdoc = Tests du serveur S4RES $Id: s4res_v1Test.rb 2 2009-03-01 11:08:26Z jmi $ usage: ruby s4res_v1Test.rb =end require './s4res_v1' require "./s4res_service" require 'test/unit' STDOUT.sync = true =begin rdoc = Classe de test du serveur S4RES =end class S4RESTest < Test::Unit::TestCase =begin rdoc Exécutée avant chaque fonction de test : - initialise des services - démarre un serveur S4RES dans un nouveau Thread =end def setup config = {:puburl => "pub"} services = [ ["/service1", S4RESService, config], ["/service2", S4RESService, config], ["/service3", S4RESService, config] ] @urlstypes = [["/service1","service"], ["/service2","service"], ["/service3","service"] ] @s4res = S4RES.new(services) @thread = Thread.start{ @s4res.start } end def test_Ecoute_Port http = Net::HTTP.new("127.0.0.1", 5555) requete = Net::HTTP::Get.new("/") http.request(requete){|reponse| assert_equal("200", reponse.code)} end def test_Structure_Page http = Net::HTTP.new("127.0.0.1", 5555) requete = Net::HTTP::Get.new("/") http.request(requete){|reponse| assert(reponse.body =~ %r|.*Serveur S4RES - v1.0.*.*|m)} end def test_Title http = Net::HTTP.new("127.0.0.1", 5555) requete = Net::HTTP::Get.new("/") http.request(requete){|reponse| assert_match(/Serveur S4RES - v1.0<\/title>/,reponse.body)} end def test_H1 http = Net::HTTP.new("127.0.0.1", 5555) requete = Net::HTTP::Get.new("/") http.request(requete){|reponse| assert_match("<h1>Serveur générique <img src='\/pub\/favicon.ico'\/> - v1.0<\/h1>",reponse.body)} end def test_Droits_Client http = Net::HTTP.new("127.0.0.1", 5555) requete = Net::HTTP::Get.new("/") http.request(requete){|reponse| assert_match("Accès depuis 127.0.0.1 (admin)",reponse.body)} end def test_Acces_doc http = Net::HTTP.new("127.0.0.1", 5555) requete = Net::HTTP::Get.new("/") http.request(requete){|reponse| assert_match("<hr/><a href='doc/'>Documentation du projet<hr/>",reponse.body)} requete = Net::HTTP::Get.new("/doc/") http.request(requete){|reponse| assert_equal("200",reponse.code)} end def test_Etats_OFF @urlstypes.each {|url,type| re = %r|<div class="service"> <div>Service <span class="type">#{type}</span></div> <div>URL : <a href="#{url}">#{url}</a></div> <div>Etat : off</div> <FORM method="POST" > <INPUT type="hidden" name="Démarrer" value="#{url}"> <INPUT type="submit" value="Démarrer"> </FORM> </div>| http = Net::HTTP.new("127.0.0.1", 5555) requete = Net::HTTP::Get.new("/") http.request(requete){|reponse| assert_match(re,reponse.body)} } end def test_Demarrage_Arret http = Net::HTTP.new("127.0.0.1", 5555) @urlstypes.each {|url,type| # Démarre le service params = "Démarrer=#{url}" http.post("/", params) # Vérifie son état re = %r|<div class="service"> <div>Service <span class="type">#{type}</span></div> <div>URL : <a href="#{url}">#{url}</a></div> <div>Etat : on</div> <FORM method="POST" > <INPUT type="hidden" name="Arrêter" value="#{url}"> <INPUT type="submit" value="Arrêter"> </FORM> </div>| http = Net::HTTP.new("127.0.0.1", 5555) requete = Net::HTTP::Get.new("/") http.request(requete){|reponse| assert_match(re,reponse.body)} } # Les services marchent-t-ils @urlstypes.each {|url,type| re = %r|<html><head> <meta http-equiv='Content-Type' content='text/html'; charset=UTF-8'> <link rel='icon' type='image/x-icon' href='#{url}/pub/service.ico' /> <title>Service - v1.0

Service de base - v1.0

[^<]+
| http = Net::HTTP.new("127.0.0.1", 5555) requete = Net::HTTP::Get.new(url) http.request(requete){|reponse| assert_match(re, reponse.body)} } # Arrêt des services @urlstypes.each {|url,type| params = "Arrêter=#{url}" http.post("/", params) re = %r|
Service #{type}
URL : #{url}
Etat : off
| http = Net::HTTP.new("127.0.0.1", 5555) requete = Net::HTTP::Get.new("/") http.request(requete){|reponse| assert_match(re,reponse.body)} } # Les services sont inaccessibles : C'est S4RES qui répond à url @urlstypes.each {|url,type| http = Net::HTTP.new("127.0.0.1", 5555) requete = Net::HTTP::Get.new(url) http.request(requete){|reponse| assert_match(/Serveur S4RES - v1.0<\/title>/,reponse.body)} } end def test_Redirection_apres_POST http = Net::HTTP.new("127.0.0.1", 5555) @urlstypes.each {|url,type| params = "Démarrer=#{url}" reponse,body = http.post("/", params) assert_equal("302",reponse.code) } end =begin rdoc Exécutée après chaque fonction de test : - arrête le serveur S4RES =end def teardown @s4res.stop end end