This document contains the assertion specification for the WAP June 2000 release of the: User Agent Caching Model technical specification.
This is the baseline specification to be used for the VSWAP June 2000 Conformance test and certification programme.
The following specifications and were used to generate the assertions:
The specification is organized such that there is a section for each relevant section of
the HTTP 1.1 Specification in which assertions can be found. Assertions drawn
directly from the WAP Caching Model Specification are prefixed WCM in the
section headers.
For each assertion in the specifications, a corresponding entry in this test
specification contains the following elements:
Test assertions have been derived from the "MUST" and "MUST NOT" conformance
requirements of RFC2616, Hypertext Transfer Protocol - HTTP/1.1.
Test assertions and test code derived from the "MUST" requirements of
RFC2616 have been revised in line with the guidelines set out in the "WAG
Working Group Liaison Statement Response: Final disposition of MUST and MUST NOT cache
tests, dated Tuesday, 18 July 2000".
"The HTTP cache specification describes what types of responses MAY be
cached and what MUST NOT be cached. However, there is no requirement that
a cache MUST cache all responses that the specification says MAY be cached.
In those cases where the specification says that such-and-such a response
MUST be disregarded if it is in the cache, or MUST be re-requested, etc.,
there are all conditional on the original response being present in the
cache. That is, the requirement are not of the form "You MUST do this" but
rather, "IF you have cached a previous response, you MUST do this." What
types of responses are cached is left to the discretion of the cache.
Therefore, any test which requires that a previous cacheable response was,
in fact, cached is flawed. Consequently, we feel that only tests for
response which MUST NOT be cached can legitimately be included."
See section 13.4 Response Cachability for assertions relating to Partial Content
responses.
|
| ID: |
cache/status/redirection/notmodified/2 |
| Class: |
B |
| Text: |
When a 304 response is received from a conditional GET request, the 304 Not Modified response includes a Date header field [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 10.3.5] |
| Note: |
Untestable because we can not force client to make a conditional GET request.
Please also see the Test Strategy note at the beginning of the section. |
|
| ID: |
cache/status/redirection/notmodified/3 |
| Class: |
B |
| Text: |
When a 304 response is received from a conditional GET request, the 304 Not Modified response includes an Expires header field. [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 10.3.5] |
| Note: |
Untestable because we can not force client to make a conditional GET request.
Please also see the Test Strategy note at the beginning of the section. |
|
| ID: |
cache/status/redirection/notmodified/4 |
| Class: |
B |
| Text: |
When a 304 response is received from a conditional GET request, the 304 Not Modified response includes a Cache-Control header field. [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 10.3.5] |
| Note: |
Untestable because we can not force client to make a conditional GET request.
Please also see the Test Strategy note at the beginning of the section. |
|
| ID: |
cache/status/redirection/notmodified/5 |
| Class: |
B |
| Text: |
When a conditional GET uses a weak cache validator, the request does not include entity headers other than that used for validation. [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 10.3.5] |
| Note: |
Untestable because we can not force client to make a conditional GET request. |
|
| ID: |
cache/status/redirection/notmodified/6 |
| Class: |
B |
| Text: |
When a 304 response is received from a conditional GET request and indicates an
uncached entity, the response is ignored. [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 10.3.5] |
| Note: |
Untestable because we can not force client to make a conditional GET request.
Please also see the Test Strategy note at the beginning of the section. |
|
| ID: |
cache/status/redirection/notmodified/7 |
| Class: |
B |
| Text: |
When a cache uses a received 304 response to update a cache entry, the cache updates the entry to reflect all new field values given in the response. [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 10.3.5] |
| Note: |
Untestable because we can not force client to make a conditional GET request.
Please also see the Test Strategy note at the beginning of the section. |
|
There are no testable assertions in this section.
|
|
| ID: |
cache/header/control/revalidation/3 |
| Class: |
A |
| Text: |
When a cache fails to revalidate a stale response containing a must-revalidate
directive, it does not serve the response to the requester. [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 14.9.4] |
| Note: |
Provide two URL-identical links to a dynamically generated page.
The page displays the current time (at time of generation).
User compares the times. If same: page has been cached, if not same: page has not been cached. |
|
| ID: |
cache/header/control/revalidation/4 |
| Class: |
D |
| Scope: |
"The client displays 504-range error messages" |
| Text: |
When a cache is unable to revalidate a stale response containing a must-revalidate
directive, it generates a 504 (Gateway Timeout) warning and does not return the
requested response. [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 14.9.4] |
| Note: |
Untestable because it is not possible to portably simulate connection failure.
Please also see the Test Strategy note at the beginning of the section. |
|
| ID: |
cache/header/control/revalidation/5 |
| Class: |
D |
| Scope: |
"The client displays Warning 14 (Response is stale) warning messages" |
| Text: |
When a cache returns a stale unvalidated response containing a must-revalidate directive, it generates a warning. [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 14.9.4] |
| Note: |
Severe connectivity restraints are not (portably) testable.
Please also see the Test Strategy note at the beginning of the section. |
|
| ID: |
cache/header/control/revalidation/6 |
| Class: |
B |
| Text: |
When a cache receives a request for a stale cache entry with a Cache-Control:
must-revalidate directive it must revalidate prior to any response. [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 14.9.4] |
| Note: |
Untestable, please see the Test Strategy note at the beginning of the section.
Please also see the Test Strategy note at the beginning of the section. |
|
| ID: |
cache/header/ifmatch/1 |
| Class: |
B |
| Text: |
When a server receives an If-Match request, it uses the Strong Comparison function to compare If-Match entity tags. [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 14.25] |
| Note: |
Untestable because we can not generate a tailored client request.
Please also see the Test Strategy note at the beginning of the section. |
|
|
| ID: |
cache/header/ifmatch/3 |
| Class: |
D |
| Scope: |
"The client displays 412 (Precondition Failed) warning messages" |
| Text: |
When no entity tags match in a list taken from an If-Match request, a 412 (Precondition Failed) response is returned. [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 14.25] |
| Note: |
Untestable because we can not generate a tailored client request.
Please also see the Test Strategy note at the beginning of the section. |
|
| ID: |
cache/header/ifmatch/4 |
| Class: |
D |
| Scope: |
"The client displays 412 (Precondition Failed) warning messages" |
| Text: |
When a * is present in an If-Match request and no entity exists in the cache, a
412 (Precondition Failed) response is returned. [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 14.25] |
| Note: |
Untestable because we can not generate a tailored client request.
Please also see the Test Strategy note at the beginning of the section. |
|
| ID: |
cache/header/ifmatch/5 |
| Class: |
B |
| Text: |
When a request results in anything other than a reply with 2xx status then the server will not attempt to update any resources in the If-Match header. [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 14.25] |
| Note: |
Untestable because we cannot generate a tailored client request.
Please also see the Test Strategy note at the beginning of the section. |
|
| ID: |
cache/header/ifmatch/6 |
| Class: |
B |
| Text: |
When a server receives a request containing an If-Match header referring to an
entity which no longer matches the server's representation of the resource then the
request is not performed. [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 14.25] |
| Note: |
Untestable because we cannot generate a tailored client request. |
|
| ID: |
cache/header/warning/1 |
| Class: |
C |
| Scope: |
"The client displays Warning header messages" |
| Text: |
When a cache receives a warning header with a response it is preserved in the
cache (not deleted). [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 14.45] |
| Note: |
Provide two URL-identical links to a dynamically generated page.
The page displays the current time (at time of generation).
User compares the times. If same: page has been cached, if not same: page has not been cached.
A Warning header is generated in both cases. Expect to see warning both times. |
|
| ID: |
cache/header/warning/2 |
| Class: |
D |
| Scope: |
"The client displays Warning header messages" |
| Text: |
When the cache removes warning headers from a validated entry, warning headers
received from the validating response are added to the entry. [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 14.45] |
| Note: |
Untestable, please see the Test Strategy note at the beginning of the section. |
|
| ID: |
cache/header/warning/3 |
| Class: |
D |
| Scope: |
"The client displays Warning 10 (Response is stale) messages" |
| Text: |
When a response is returned as stale, it includes a Warning 10 (Response is stale) header. [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 14.45] |
| Note: |
Untestable, please see the Test Strategy note at the beginning of the section. |
|
| ID: |
cache/header/warning/4 |
| Class: |
D |
| Scope: |
"The client displays Warning 11 (Revalidation failed) messages" |
| Text: |
When a validation request fails due to inability to connect to the server, the cache includes a Warning 11 (Revalidation Failed) header in its response. [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 14.45] |
| Note: |
No portable way of forcing a connection failure during test. |
|
| ID: |
cache/header/warning/5 |
| Class: |
D |
| Scope: |
"The client displays Warning 14 (Response is stale) warning messages" |
| Text: |
When a cache applies a Content-Encoding transformation to a response, it includes a Warning 14 (Transformation Applied) header in the response. [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 14.45] |
| Note: |
Untestable due to inability to control cache generation of headers. |
|
| ID: |
cache/header/warning/6 |
| Class: |
C |
| Scope: |
"The client displays Warning 14 (Response is stale) warning messages" |
| Text: |
When a cache receives an entity with a warning 14 (Transformation Applied) it
does not delete the header. [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 14.45] |
| Note: |
Warning header generated in both cases. Header should not be removed
- warning expected in both cases. |
|
| ID: |
cache/header/warning/7 |
| Class: |
C |
| Scope: |
"The client displays Warning 14 (Response is stale) warning messages" |
| Text: |
When a cache has re-validated a response containing a Warning 14 (Transformation
Applied ) header, it does not delete the header. [Hypertext Transfer Protocol -- HTTP/1.1 Specification section 14.45] |
| Note: |
Provide two URL-identical links to a dynamically generated page.
The page displays the current time (at time of generation).
First doc. should provide warning. must-revalidate header provided means that second doc. should be revalidates and also provide warning. |
|