LCOV - code coverage report
Current view: top level - test/wpt/xhr - status-basic.js (source / functions) Hit Total Coverage
Test: lcov.info Lines: 109 111 98.2 %
Date: 2024-12-07 00:20:21 Functions: 3 3 100.0 %
Branches: 5 6 83.3 %

           Branch data     Line data    Source code
       1            [ + ]:          2 : import assert from 'node:assert/strict';
       2                 :          2 : import { XMLHttpRequest } from '../../../lib/whatwg-xhr.js';
       3                 :          2 : 
       4            [ + ]:          2 : export default (activeURL) => {
       5                 :          1 : 
       6                 :          1 :         let counter = 0;
       7                 :          1 : 
       8                 :          1 :         status(204,     'UNICORNSWIN',  '',     '');
       9                 :          1 :         status(401, 'OH HELLO', 'Not today.', '');
      10                 :          1 :         //      status(402, 'FIVE BUCKS', '<x>402<\/x>', 'text/xml');
      11                 :          1 :         status(402, 'FREE', 'Nice!', 'text/doesnotmatter');
      12                 :          1 :         status(402, '402 TEH AWESOME', '', '');
      13                 :          1 :         status(502, 'YO', '', '');
      14                 :          1 :         status(502, 'lowercase', 'SWEET POTATO', 'text/plain');
      15                 :          1 :         status(503, 'HOUSTON WE HAVE A', '503', 'text/plain');
      16                 :          1 :         status(699, 'WAY OUTTA RANGE', '699', 'text/plain');
      17                 :          1 : 
      18            [ + ]:          1 :         function status(code, text, content, type){
      19                 :          8 :                 statusRequest('GET',     code, text, content, type);
      20                 :          8 :                 statusRequest('HEAD',    code, text, content, type);
      21                 :          8 :                 statusRequest('CHICKEN', code, text, content, type);
      22                 :          8 :         }
      23                 :          1 : 
      24            [ + ]:          1 :         function statusRequest(method, code, text, content, type){
      25                 :         24 : 
      26                 :         24 :                 let xhr = new XMLHttpRequest();
      27                 :         24 :                 assert.strictEqual(xhr.status, 0);
      28                 :         24 : 
      29                 :         24 :                 let url = `${activeURL}/status.py?code=`;
      30                 :         24 : 
      31                 :         24 :                 url += encodeURIComponent(code);
      32                 :         24 :                 url += '&text=' + text;
      33                 :         24 :                 url += '&content=' + encodeURIComponent(content);
      34                 :         24 :                 url += '&type=' + encodeURIComponent(type);
      35                 :         24 : 
      36                 :         24 :                 xhr.open(method, url, false);
      37                 :         24 :                 assert.strictEqual(xhr.status, 0);
      38                 :         24 : 
      39                 :         24 :                 xhr.send();
      40                 :         24 :                 assert.strictEqual(xhr.status, code);
      41                 :         24 :                 assert.strictEqual(xhr.statusText, text);
      42                 :         24 :                 assert.strictEqual(xhr.getResponseHeader('X-Request-Method'), method);
      43                 :         24 : 
      44            [ + ]:         24 :                 if(method !== 'HEAD'){
      45            [ - ]:         16 :                         if(type === 'text/xml'){
      46                 :          0 :                                 assert.strictEqual(xhr.responseXML.documentElement.localName, 'x');
      47                 :          0 :                         }
      48                 :         16 :                         assert.strictEqual(xhr.responseText, content);
      49                 :         16 :                 }
      50                 :         24 :         }
      51                 :          1 : }
      52                 :          2 : 
      53                 :          2 : /*
      54                 :          2 :  * status-basic.htm
      55                 :          2 :  *
      56                 :          2 : 
      57                 :          2 : <!doctype html>
      58                 :          2 : <html>
      59                 :          2 :   <head>
      60                 :          2 :     <title>XMLHttpRequest: status/statusText - various responses</title>
      61                 :          2 :     <script src="/resources/testharness.js"></script>
      62                 :          2 :     <script src="/resources/testharnessreport.js"></script>
      63                 :          2 :     <link rel="help" href="https://xhr.spec.whatwg.org/#the-status-attribute" data-tested-assertations="following::ol/li[3]" />
      64                 :          2 :     <link rel="help" href="https://xhr.spec.whatwg.org/#the-statustext-attribute" data-tested-assertations="following::ol/li[3]" />
      65                 :          2 :     <link rel="help" href="https://xhr.spec.whatwg.org/#the-getresponseheader()-method" data-tested-assertations="following::ol/li[5]" />
      66                 :          2 :     <link rel="help" href="https://xhr.spec.whatwg.org/#the-responsetext-attribute" data-tested-assertations="following::ol/li[4]" />
      67                 :          2 :   </head>
      68                 :          2 :   <body>
      69                 :          2 :     <div id="log"></div>
      70                 :          2 :     <script>
      71                 :          2 :     var counter = 0
      72                 :          2 :       function statusRequest(method, code, text, content, type) {
      73                 :          2 :         counter++
      74                 :          2 :         test(function() {
      75                 :          2 :           var client = new XMLHttpRequest()
      76                 :          2 :           assert_equals(client.status, 0);
      77                 :          2 :           client.open(method, "resources/status.py?code=" + code + "&text=" + encodeURIComponent(text) + "&content=" + encodeURIComponent(content) + "&type=" + encodeURIComponent(type), false)
      78                 :          2 :           assert_equals(client.status, 0);
      79                 :          2 :           client.send(null)
      80                 :          2 :           assert_equals(client.status, code)
      81                 :          2 :           assert_equals(client.statusText, text)
      82                 :          2 :           assert_equals(client.getResponseHeader("X-Request-Method"), method)
      83                 :          2 :           if(method != "HEAD") {
      84                 :          2 :             if(type == "text/xml") {
      85                 :          2 :               assert_equals(client.responseXML.documentElement.localName, "x")
      86                 :          2 :             }
      87                 :          2 :             assert_equals(client.responseText, content)
      88                 :          2 :           }
      89                 :          2 :         }, document.title + " " + counter + " (" + method + " " + code + ")")
      90                 :          2 :       }
      91                 :          2 :       function status(code, text, content, type) {
      92                 :          2 :         statusRequest("GET", code, text, content, type)
      93                 :          2 :         statusRequest("HEAD", code, text, content, type)
      94                 :          2 :         statusRequest("CHICKEN", code, text, content, type)
      95                 :          2 :       }
      96                 :          2 :       status(204, "UNICORNSWIN", "", "")
      97                 :          2 :       status(401, "OH HELLO", "Not today.", "")
      98                 :          2 :       status(402, "FIVE BUCKS", "<x>402<\/x>", "text/xml")
      99                 :          2 :       status(402, "FREE", "Nice!", "text/doesnotmatter")
     100                 :          2 :       status(402, "402 TEH AWESOME", "", "")
     101                 :          2 :       status(502, "YO", "", "")
     102                 :          2 :       status(502, "lowercase", "SWEET POTATO", "text/plain")
     103                 :          2 :       status(503, "HOUSTON WE HAVE A", "503", "text/plain")
     104                 :          2 :       status(699, "WAY OUTTA RANGE", "699", "text/plain")
     105                 :          2 :     </script>
     106                 :          2 :   </body>
     107                 :          2 : </html>
     108                 :          2 : 
     109                 :          2 :  *
     110                 :          2 :  * status-basic.htm
     111                 :          2 :  */

Generated by: LCOV version 1.14