Changeset 15249 in project for release/4/xml-rpc/trunk/tests/run.scm


Ignore:
Timestamp:
07/25/09 16:09:02 (12 years ago)
Author:
sjamaan
Message:

Implement request/response handler

File:
1 edited

Legend:

Unmodified
Added
Removed
  • release/4/xml-rpc/trunk/tests/run.scm

    r15222 r15249  
    1 (use test)
     1(use test ssax intarweb sxpath-lolevel)
    22;; Should use numbers, but that's a whole new can of worms...
    33
     
    306306                params)))
    307307
    308 (test-group "request handling"
    309   (test "simple request"
     308(test-group "xml call handling"
     309  (test "simple call"
    310310        '(1 2 3)
    311311        (call-xml-rpc-proc
     
    339339                   (param (value (int "3"))))))
    340340               `((scheme.List . ,list))))
    341   (test-error "malformed request error"
     341  (test-error "malformed xml error"
    342342              (call-xml-rpc-proc
    343343               `(*TOP*
     
    350350               `((scheme.List . ,list)))))
    351351
    352 (test-group "request to xml conversion"
    353   (test "simple request"
     352(test-group "call to xml conversion"
     353  (test "simple call"
    354354        `(methodResponse
    355355          (params
     
    387387             (param (value (int "3"))))))
    388388         `((scheme.List . ,list))))
    389   (test "malformed request"
     389  (test "malformed xml"
    390390        `(methodResponse
    391391          (fault
     
    427427             (param (value (int "3"))))))
    428428         `((scheme.List . ,(lambda _ (error "Error in procedure")))))))
     429
     430(define handler (make-xml-rpc-request-handler `((scheme.List . ,list))))
     431
     432(test-group "Request handling"
     433  (call-with-input-string "doesn't matter"
     434    (lambda (in)
     435      (let* ((resp #f)
     436             (out (call-with-output-string
     437                    (lambda (out)
     438                      (set! resp
     439                            (handler
     440                             (make-request port: in method: 'GET)
     441                             (make-response port: out)))))))
     442        (test 405 (response-code resp)))))
     443  (call-with-input-string "invalid XML"
     444    (lambda (in)
     445      (let* ((resp #f)
     446             (out (call-with-output-string
     447                    (lambda (out)
     448                      (set! resp
     449                            (handler
     450                             (make-request port: in method: 'POST)
     451                             (make-response port: out)))))))
     452        (test 200 (response-code resp))
     453        (test "Invalid XML"
     454              `(*TOP*
     455                (*PI* xml "version=\"1.0\"")
     456                (methodResponse
     457                 (fault
     458                  (value
     459                   (struct (member (name "faultCode")
     460                                   (value (i4 "3")))
     461                           (member (name "faultString")
     462                                   (value (string "Invalid request XML"))))))))
     463              (call-with-input-string out
     464                (lambda (in)
     465                  (let ((resp (read-response in)))
     466                    (ssax:xml->sxml (response-port resp) '()))))))))
     467  (define (sxml->string sxml)
     468    (string-concatenate (flatten (sxml:sxml->xml sxml))))
     469  (call-with-input-string (sxml->string `(methodCall
     470                                          (methodName "scheme.List")
     471                                          (params
     472                                           (param (value (int "1")))
     473                                           (param (value (int "2")))
     474                                           (param (value (int "3"))))))
     475    (lambda (in)
     476      (let* ((resp #f)
     477             (out (call-with-output-string
     478                    (lambda (out)
     479                      (set! resp
     480                            (handler
     481                             (make-request port: in method: 'POST)
     482                             (make-response port: out)))))))
     483        (test 200 (response-code resp))
     484        (test "Correct response to valid request"
     485              `(*TOP*
     486                (*PI* xml "version=\"1.0\"")
     487                (methodResponse
     488                 (params
     489                  (param (value (array (data (value (i4 "1"))
     490                                             (value (i4 "2"))
     491                                             (value (i4 "3")))))))))
     492              (call-with-input-string out
     493                (lambda (in)
     494                  (let ((resp (read-response in)))
     495                    (ssax:xml->sxml (response-port resp) '())))))))))
Note: See TracChangeset for help on using the changeset viewer.