From: Cornelius Schumacher
---
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