require './s4res_sondage' require "webrick" require "utils.rb" require 'test/unit' class S4RESSondageTest < Test::Unit::TestCase def test_Sondage addr = "127.0.0.1" port = 5555 # Service non lancé assert_raises(Errno::ECONNREFUSED){ TCPSocket.open(addr, port) } # Lancement du serveur TestWEBrick.start_httpserver({:Port => port,:BindAddress => addr, }){|server, addr, port| 3.times do # Lancement du service config = {:puburl => "pub", :sondage => { :nboui => 0, :nbnon => 0, :nbbof => 0, :datefin => Time.now + 30, :votes => {}, :titre => "Module S4RES", :question => "Vous avez jusqu'ici trouvé les TPs ...?", :oui => "difficiles", :non => "faciles", :bof => "ni l'un ni l'autre" }} sondage = S4RESSondage.new(server,"/sondage",config) sondage.start # Retour status("1.2.3.4") assert_equal("
Service sondage
URL : /sondage
Etat : on
",sondage.status("1.2.3.4")) # Retour status("127.0.0.1") assert_equal("
Service sondage
URL : /sondage
Etat : on
",sondage.status("127.0.0.1")) # Erreur HTTP pour GET / http = Net::HTTP.new(addr, port) requete = Net::HTTP::Get.new("/") http.request(requete){|reponse| assert_equal("404", reponse.code)} # Réponse 200 OK pour GET /sondage/ requete = Net::HTTP::Get.new("/sondage/") http.request(requete){|reponse| assert_equal("200", reponse.code)} # Contenu page pour GET /sondage/ re = %r| Module S4RES - Service Sondage - v1.0

Module S4RES

Vous avez jusqu'ici trouvé les TPs \.\.\.\?

difficiles : 0 vote\(s\)
faciles : 0 vote\(s\)
ni l'un ni l'autre : 0 vote\(s\)
Fin de la consultation prévue le [^<]+
Il vous reste [0-9.]+ secondes pour voter
Nouvelle réponse :
difficiles
faciles
ni l'un ni l'autre

Administration depuis 127\.0\.0\.1
Titre :
Question :
Fin de la consultation : Time.now \+ secondes


Service Sondage - v1.0

|m requete = Net::HTTP::Get.new("/sondage/") 5.times { http.request(requete){|reponse| assert_match(re,reponse.body)} } # Réponse 200 OK pour GET /sondage/pub/sondage.ico reponse, data = http.get('/sondage/pub/sondage.ico', nil ) assert_equal("200", reponse.code) # Réponse 304 Not Modified pour GET /sondage/pub/sondage.ico Conditionnel params = {'If-Modified-Since' => reponse['Last-Modified']} reponse, data = http.get('/sondage/pub/sondage.ico', params ) assert_equal("304", reponse.code) # Votes depuis la même machine votes = [["oui",[1,0,0]],["non",[0,1,0]],["bof",[0,0,1]]] requete = Net::HTTP::Get.new("/sondage/") (votes + votes).each {|vote,nbs| params = "reponse=#{vote}" reponse,body = http.post("/sondage/", params) assert_equal("302",reponse.code) re = %r|difficiles : #{nbs[0]} vote\(s\)
faciles : #{nbs[1]} vote\(s\)
ni l'un ni l'autre : #{nbs[2]} vote\(s\)| http.request(requete){|reponse| assert_match(re,reponse.body)} } # Modifications paramètres admins = [["titre"," NouVEAu TiTRe","

NouVEAu TiTRe"], ["question"," NouvELLe QuEsTiON ","

NouvELLe QuEsTiON "], ["datefin","30",/Il vous reste 28[0-9.]+/]] (admins + admins).each {|param,val,re| params = "#{param}=#{val}" reponse,body = http.post("/sondage/", params) sleep(1) http.request(requete){|reponse| assert_match(re,reponse.body)} } # Arrêt du service sondage.stop # Retour status("1.2.3.4") assert_equal("
Service sondage
URL : /sondage
Etat : off
",sondage.status("1.2.3.4")) # Retour status("127.0.0.1") assert_equal("
Service sondage
URL : /sondage
Etat : off
",sondage.status("127.0.0.1")) # Erreur HTTP pour GET /sondage http = Net::HTTP.new(addr, port) requete = Net::HTTP::Get.new("/sondage") 5.times { http.request(requete){|reponse| assert_equal("404", reponse.code)} } end #3.times } #httpserver end #test_Sondage end