// META: title=Cookie Store API: cookieStore.get() arguments // META: global=window,serviceworker 'use strict'; promise_test(async testCase => { await cookieStore.set('cookie-name', 'cookie-value'); testCase.add_cleanup(async () => { await cookieStore.delete('cookie-name'); }); await promise_rejects_js(testCase, TypeError, cookieStore.get()); }, 'cookieStore.get with no arguments returns TypeError'); promise_test(async testCase => { await cookieStore.set('cookie-name', 'cookie-value'); testCase.add_cleanup(async () => { await cookieStore.delete('cookie-name'); }); await promise_rejects_js(testCase, TypeError, cookieStore.get({})); },'cookieStore.get with empty options returns TypeError'); promise_test(async testCase => { await cookieStore.set('cookie-name', 'cookie-value'); testCase.add_cleanup(async () => { await cookieStore.delete('cookie-name'); }); const cookie = await cookieStore.get('cookie-name'); assert_equals(cookie.name, 'cookie-name'); assert_equals(cookie.value, 'cookie-value'); }, 'cookieStore.get with positional name'); promise_test(async testCase => { await cookieStore.set('cookie-name', 'cookie-value'); testCase.add_cleanup(async () => { await cookieStore.delete('cookie-name'); }); const cookie = await cookieStore.get({ name: 'cookie-name' }); assert_equals(cookie.name, 'cookie-name'); assert_equals(cookie.value, 'cookie-value'); }, 'cookieStore.get with name in options'); promise_test(async testCase => { await cookieStore.set('cookie-name', 'cookie-value'); testCase.add_cleanup(async () => { await cookieStore.delete('cookie-name'); }); const cookie = await cookieStore.get('cookie-name', { name: 'wrong-cookie-name' }); assert_equals(cookie.name, 'cookie-name'); assert_equals(cookie.value, 'cookie-value'); }, 'cookieStore.get with name in both positional arguments and options'); promise_test(async testCase => { await cookieStore.set('cookie-name', 'cookie-value'); testCase.add_cleanup(async () => { await cookieStore.delete('cookie-name'); }); let target_url = self.location.href; if (self.GLOBAL.isWorker()) { target_url = target_url + '/path/within/scope'; } const cookie = await cookieStore.get({ url: target_url }); assert_equals(cookie.name, 'cookie-name'); assert_equals(cookie.value, 'cookie-value'); }, 'cookieStore.get with absolute url in options'); promise_test(async testCase => { await cookieStore.set('cookie-name', 'cookie-value'); testCase.add_cleanup(async () => { await cookieStore.delete('cookie-name'); }); let target_path = self.location.pathname; if (self.GLOBAL.isWorker()) { target_path = target_path + '/path/within/scope'; } const cookie = await cookieStore.get({ url: target_path }); assert_equals(cookie.name, 'cookie-name'); assert_equals(cookie.value, 'cookie-value'); }, 'cookieStore.get with relative url in options'); promise_test(async testCase => { const invalid_url = `${self.location.protocol}//${self.location.host}/different/path`; await promise_rejects_js(testCase, TypeError, cookieStore.get( { url: invalid_url })); }, 'cookieStore.get with invalid url path in options'); promise_test(async testCase => { const invalid_url = `${self.location.protocol}//www.example.com${self.location.pathname}`; await promise_rejects_js(testCase, TypeError, cookieStore.get( { url: invalid_url })); }, 'cookieStore.get with invalid url host in options');