blob: fd719876f4dd3730e41cbd03ca141447f96b54c0 [file] [log] [blame]
function wrap_by_tag(tag, text) {
return tag ? `${tag}: ${text}`: text;
}
function validate_expectations(key, expected, tag) {
return fetch("/fetch/metadata/resources/record-header.py?retrieve=true&file=" + key)
.then(response => response.text())
.then(text => {
assert_not_equals(text, "No header has been recorded");
let value = JSON.parse(text);
test(t => assert_equals(value.dest, expected.dest), `${tag}: sec-fetch-dest`);
test(t => assert_equals(value.mode, expected.mode), `${tag}: sec-fetch-mode`);
test(t => assert_equals(value.site, expected.site), `${tag}: sec-fetch-site`);
test(t => assert_equals(value.user, expected.user), `${tag}: sec-fetch-user`);
});
};
/**
* @param {object} value
* @param {object} expected
* @param {string} tag
**/
function assert_header_equals(value, expected, tag) {
if (typeof(value) === "string"){
assert_not_equals(value, "No header has been recorded");
value = JSON.parse(value);
}
assert_equals(value.mode, expected.mode, wrap_by_tag(tag, "mode"));
assert_equals(value.site, expected.site, wrap_by_tag(tag, "site"));
if (expected.hasOwnProperty("user"))
assert_equals(value.user, expected.user, wrap_by_tag(tag, "user"));
}
/**
* @param {object} value
* @param {string} tag
**/
function assert_no_headers(value, tag) {
if (typeof(value) === "string"){
if (value == "No header has been recorded") return;
value = JSON.parse(value);
}
assert_equals(value.mode, "", wrap_by_tag(tag, "mode"));
assert_equals(value.site, "", wrap_by_tag(tag, "site"));
if (expected.hasOwnProperty("user"))
assert_equals(value.user, "", wrap_by_tag(tag, "user"));
}
/**
* @param {string} header
* @param {object} value
* @param {string} expected
* @param {string} tag
**/
function assert_header(header, value, expected, tag) {
if (typeof(value) === "string"){
assert_not_equals(value, "No header has been recorded");
value = JSON.parse(value);
}
assert_equals(value[header], expected, wrap_by_tag(tag, header));
}
/**
*
* @param {object} value
* @param {string} expected
* @param {string} tag
**/
function assert_header_dest_equals(value, expected, tag) {
assert_header("dest", value, expected, tag);
}
/**
* Test fetch record-header.py
* @param {string} key
* @param {string} expected
* @param {function} assert
* @return {Promise<string | never>}
*/
function fetch_record_header(key, expected, assert) {
return fetch("/fetch/metadata/resources/record-header.py?retrieve=true&file=" + key)
.then(response => response.text())
.then(text => assert(text, expected));
}
/**
*
* @param {string} key
* @param {string} expected
* @param {function} assert
* @param {function} resolve
* @param {function} reject
* @return {Promise<any>}
*/
function fetch_record_header_with_catch(key, expected, assert, resolve, reject) {
return fetch_record_header(key, expected, assert, resolve)
.then(_ => resolve())
.catch(e => reject(e));
}