Commit 3625b55a authored by Garcia's avatar Garcia
Browse files

Create TTCN-3 tests for HTTP codec

parent 70fb09df
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -27,7 +27,7 @@ module TestCodec_HttpResponse {
    testcase tc_http_200_ok_1() runs on TCType system TCType {
        var bitstring v_raw_message := oct2bit('485454502f312e3120323030200d0a582d436f6e74656e742d547970652d4f7074696f6e733a206e6f736e6966660d0a582d5853532d50726f74656374696f6e3a20313b206d6f64653d626c6f636b0d0a43616368652d436f6e74726f6c3a206e6f2d63616368652c206e6f2d73746f72652c206d61782d6167653d302c206d7573742d726576616c69646174650d0a507261676d613a206e6f2d63616368650d0a457870697265733a20300d0a436f6e74656e742d547970653a206170706c69636174696f6e2f68656c642b786d6c3b636861727365743d5554462d380d0a436f6e74656e742d4c656e6774683a20313030340d0a446174653a205475652c203239204d617920323031382031333a32383a353920474d540d0a0d0a3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0a3c6c6f636174696f6e526573706f6e736520786d6c6e733d2275726e3a696574663a706172616d733a786d6c3a6e733a67656f707269763a68656c64223e0a202020203c70726573656e636520656e746974793d22707265733a67787074697874696d6870306c66372220786d6c6e733d2275726e3a696574663a706172616d733a786d6c3a6e733a70696466223e0a20202020202020203c7475706c652069643d2239676d646972636671616a796c7931223e0a2020202020202020202020203c7374617475733e0a202020202020202020202020202020203c67656f7072697620786d6c6e733d2275726e3a696574663a706172616d733a786d6c3a6e733a706964663a67656f707269763130223e0a20202020202020202020202020202020202020203c6c6f636174696f6e2d696e666f3e0a2020202020202020202020202020202020202020202020203c67733a436972636c6520786d6c6e733a676d6c3d22687474703a2f2f7777772e6f70656e6769732e6e65742f676d6c22207372734e616d653d2275726e3a6f67633a6465663a6372733a455053473a3a343332362220786d6c6e733a67733d22687474703a2f2f7777772e6f70656e6769732e6e65742f706964666c6f2f312e30223e0a202020202020202020202020202020202020202020202020202020203c676d6c3a706f733e34382e323135333837392031362e323930333c2f676d6c3a706f733e0a202020202020202020202020202020202020202020202020202020203c67733a72616469757320756f6d3d2275726e3a6f67633a6465663a756f6d3a455053473a3a39303031223e32332e3630303030303338313436393732373c2f67733a7261646975733e0a2020202020202020202020202020202020202020202020203c2f67733a436972636c653e0a20202020202020202020202020202020202020203c2f6c6f636174696f6e2d696e666f3e0a20202020202020202020202020202020202020203c75736167652d72756c65732f3e0a20202020202020202020202020202020202020203c6d6574686f643e6770733c2f6d6574686f643e0a202020202020202020202020202020203c2f67656f707269763e0a2020202020202020202020203c2f7374617475733e0a2020202020202020202020203c74696d657374616d703e323031372d30322d31395431303a35353a30302b30303a30303c2f74696d657374616d703e0a20202020202020203c2f7475706c653e0a202020203c2f70726573656e63653e0a3c2f6c6f636174696f6e526573706f6e73653e0a'O);
        var bitstring v_enc_raw_message;
        var template (present) HttpMessage v_expected_msg := { request := { method := "POST", uri := "/lis/api/held", version_major := 1, version_minor := 1, header := { { header_name := "Host", header_value := { "rpi:8071" } }, { header_name := "Content-Type", header_value := { "application/held+xml;charset=utf-8" } }, { header_name := "Content-Length", header_value := { "297" } } }, body := { xml_body := { raw := ?/*v_expected_xml_body*/ } } } };
        var template (present) HttpMessage v_expected_msg := { response := { version_major := 1, version_minor := 1, statuscode := 200, statustext := "", header := { { header_name := "X-Content-Type-Options", header_value := { "nosniff" } }, { header_name := "X-XSS-Protection", header_value := { "1; mode=block" } }, { header_name := "Cache-Control", header_value := { "no-cache, no-store, max-age=0, must-revalidate" } }, { header_name := "Pragma", header_value := { "no-cache" } }, { header_name := "Expires", header_value := { "0" } }, { header_name := "Content-Type", header_value := { "application/held+xml;charset=UTF-8" } }, { header_name := "Content-Length", header_value := { "1004" } }, { header_name := "Date", header_value := { "Tue, 29 May 2018 13:28:59 GMT" } } }, body := { xml_body := { raw :=  ?/*v_expected_xml_body*/ } } } };
        var HttpMessage v_dec_msg;
        var integer v_result;
        
@@ -46,7 +46,19 @@ module TestCodec_HttpResponse {
        if (not isbound(v_enc_raw_message)) {
          setverdict(fail, "Encoding failed!");
        } else {
          if (match(v_enc_raw_message, v_raw_message)) {
          // Raw HTTP response does not end with CRLF ==> Content-Length are different
          var bitstring v1 := substr(v_enc_raw_message, 0, 240 * 8); // Byte #240..244: 31303034
          var bitstring v2 := substr(v_raw_message, 0, 240 * 8); // Byte #240..244: 31303035
          if (match(v1, v2)) {
            setverdict(pass, "Encode match");
          } else {
            setverdict(fail, "Encoding mismatch");
          }
          v1 := substr(v_enc_raw_message, 244 * 8, lengthof(v_enc_raw_message) - (244 + 2) * 8);
          v2 := substr(v_raw_message, 244 * 8, lengthof(v_raw_message) - (244 + 1) * 8);
          log("v1=", bit2oct(v1));
          log("v2=", bit2oct(v2));
          if (match(v1, v2)) {
            setverdict(pass, "Encode match");
          } else {
            setverdict(fail, "Encoding mismatch");