From: Cornelius Schumacher <schumacher@kde.org> --- docs/api/api.txt | 6 ++++- docs/api/api.txt.test | 24 +++++++++++++++++++ docs/api/rest_test.rb | 61 ++++++++++++++++++++++++++++++++++++++---------- 3 files changed, 77 insertions(+), 14 deletions(-) create mode 100644 docs/api/api.txt.test diff --git a/docs/api/api.txt b/docs/api/api.txt index b2ce71f..f48ea07 100644 --- a/docs/api/api.txt +++ b/docs/api/api.txt @@ -109,6 +109,8 @@ XmlResult: status == Platform data +Host: api.opensuse.org + GET /platform/ List all platforms @@ -118,6 +120,8 @@ XmlResult: directory == User data +Host: api.opensuse.org + <userid>: Id of user @@ -142,7 +146,7 @@ XmlResult: status Host: download.opensuse.org -GET /rpm/<project>/<platform>/<package>/<arch>/<rpm-name> +GET /rpm/<project>/<platform>/<package>/<arch>/<rpmname> Get RPM. diff --git a/docs/api/api.txt.test b/docs/api/api.txt.test new file mode 100644 index 0000000..f8c23e9 --- /dev/null +++ b/docs/api/api.txt.test @@ -0,0 +1,24 @@ +@arg_project="plutimikation" +@arg_package="plutimikation" +@arg_filename="plutimikation.spec" +@arg_platform="factory/standard" +@arg_arch="i586" +@arg_userid="Admin" +@arg_rpmname="plutimikation.rpm" + +request "GET /about" +request "GET /source/" +request "GET /source/<project>/_meta" +request "PUT /source/<project>/_meta" +request "GET /source/<project>/<package>/_meta" +request "PUT /source/<project>/<package>/_meta" +request "GET /source/<project>/<package>/<filename>" +request "PUT /source/<project>/<package>/<filename>" +request "POST /source/<project>/<package>?cmd=createSpecFileTemplate" +request "GET /platform/" +request "GET /person/<userid>" +request "PUT /person/<userid>" +request "GET /rpm/<project>/<platform>/<package>/<arch>/<rpmname>" +request "GET /result/<project>/<platform>/result" +request "GET /result/<project>/<platform>/<package>/result" +request "GET /result/<project>/<platform>/<package>/<arch>/log" diff --git a/docs/api/rest_test.rb b/docs/api/rest_test.rb index 4e79077..f3d4de6 100644 --- a/docs/api/rest_test.rb +++ b/docs/api/rest_test.rb @@ -1,6 +1,9 @@ require "net/http" require "tempfile" +class ParameterError < Exception +end + class TestContext attr_writer :user, :password, :show_body @@ -15,6 +18,7 @@ class TestContext @unsupported = 0 @failed = 0 @passed = 0 + @error = 0 end def bold str @@ -27,7 +31,7 @@ class TestContext end def green str - str + bold str end def magenta str @@ -53,6 +57,15 @@ class TestContext @passed += 1 end + def error str = nil + error_str = " ERROR" + if ( str ) + error_str += ": " + str + end + puts red( error_str ) + @error += 1 + end + def request arg puts bold( "REQUEST: " + arg ) @@ -75,12 +88,21 @@ class TestContext host = request.host.to_s if ( !host || host.empty? ) - STDERR.puts " No host defined." + error "No host defined" return end + begin + path = substitute_parameters request + rescue ParameterError + error + return + end + + puts " Path: " + path + if ( request.verb == "GET" ) - req = Net::HTTP::Get.new( request.path ) + req = Net::HTTP::Get.new( path ) req.basic_auth( @user, @password ) response = Net::HTTP.start( host ) do |http| http.request( req ) @@ -91,13 +113,6 @@ class TestContext return end - parameters = request.parameters - if ( !parameters.empty? ) - STDERR.puts " Parameter substitution not supported yet." - unsupported - return - end - if ( response ) puts " return code: #{response.code}" if ( @show_body ) @@ -127,6 +142,23 @@ class TestContext end + def substitute_parameters request + path = request.path + + request.parameters.each do |parameter| + p = parameter.name + arg = eval( "@arg_#{parameter.name}" ) + if ( !arg ) + puts " Can't substitute parameter '#{p}'. " + + "No variable @arg_#{p} defined." + raise ParameterError + end + path.gsub! /<#{p}>/, arg + end + + path + end + def validate_xml xml, schema_file tmp = Tempfile.new('rest_test_validator') tmp.print xml @@ -143,7 +175,7 @@ class TestContext end def print_summary - error = @tested - @unsupported - @failed - @passed + undefined = @tested - @unsupported - @failed - @passed - @error puts "Total #{@tested} tests" puts " #{@passed} passed" @@ -151,8 +183,11 @@ class TestContext if ( @unsupported ) puts " #{@unsupported} unsupported" end - if ( error ) - puts " #{error} errors" + if ( @error ) + puts " #{@error} errors" + end + if ( undefined ) + puts " #{undefined} undefined" end end -- 1.7.7 -- To unsubscribe, e-mail: obs-commits+unsubscribe@opensuse.org To contact the owner, e-mail: obs-commits+owner@opensuse.org