diff options
Diffstat (limited to 'tests/httpcookie.test')
-rw-r--r-- | tests/httpcookie.test | 876 |
1 files changed, 876 insertions, 0 deletions
diff --git a/tests/httpcookie.test b/tests/httpcookie.test new file mode 100644 index 0000000..a6b193f --- /dev/null +++ b/tests/httpcookie.test @@ -0,0 +1,876 @@ +# Commands covered: http::cookiejar +# +# This file contains a collection of tests for the cookiejar package. +# Sourcing this file into Tcl runs the tests and generates output for errors. +# No output means no errors were found. +# +# Copyright (c) 2014 Donal K. Fellows. +# +# See the file "license.terms" for information on usage and redistribution of +# this file, and for a DISCLAIMER OF ALL WARRANTIES. + +package require tcltest 2 +namespace import -force ::tcltest::* + +::tcltest::loadTestedCommands + +testConstraint notOSXtravis [apply {{} { + upvar 1 env(TRAVIS_OSX_IMAGE) travis + return [expr {![info exists travis] || ![string match xcode* $travis]}] +}}] +testConstraint sqlite3 [expr {[testConstraint notOSXtravis] && ![catch { + package require sqlite3 +}]}] +testConstraint cookiejar [expr {[testConstraint sqlite3] && ![catch { + package require cookiejar +}]}] + +set COOKIEJAR_VERSION 0.1 +test http-cookiejar-1.1 "cookie storage: packaging" {notOSXtravis sqlite3 cookiejar} { + package require cookiejar +} $COOKIEJAR_VERSION +test http-cookiejar-1.2 "cookie storage: packaging" {notOSXtravis sqlite3 cookiejar} { + package require cookiejar + package require cookiejar +} $COOKIEJAR_VERSION + +test http-cookiejar-2.1 "cookie storage: basics" -constraints { + notOSXtravis sqlite3 cookiejar +} -returnCodes error -body { + http::cookiejar +} -result {wrong # args: should be "http::cookiejar method ?arg ...?"} +test http-cookiejar-2.2 "cookie storage: basics" -constraints { + notOSXtravis sqlite3 cookiejar +} -returnCodes error -body { + http::cookiejar ? +} -result {unknown method "?": must be configure, create, destroy or new} +test http-cookiejar-2.3 "cookie storage: basics" -constraints { + notOSXtravis sqlite3 cookiejar +} -body { + http::cookiejar configure +} -result {-domainfile -domainlist -domainrefresh -loglevel -offline -purgeold -retain -vacuumtrigger} +test http-cookiejar-2.4 "cookie storage: basics" -constraints { + notOSXtravis sqlite3 cookiejar +} -returnCodes error -body { + http::cookiejar configure a b c d e +} -result {wrong # args: should be "http::cookiejar configure ?optionName? ?optionValue?"} +test http-cookiejar-2.5 "cookie storage: basics" -constraints { + notOSXtravis sqlite3 cookiejar +} -returnCodes error -body { + http::cookiejar configure a +} -result {bad option "a": must be -domainfile, -domainlist, -domainrefresh, -loglevel, -offline, -purgeold, -retain, or -vacuumtrigger} +test http-cookiejar-2.6 "cookie storage: basics" -constraints { + notOSXtravis sqlite3 cookiejar +} -returnCodes error -body { + http::cookiejar configure -d +} -result {ambiguous option "-d": must be -domainfile, -domainlist, -domainrefresh, -loglevel, -offline, -purgeold, -retain, or -vacuumtrigger} +test http-cookiejar-2.7 "cookie storage: basics" -setup { + set old [http::cookiejar configure -loglevel] +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + list [http::cookiejar configure -loglevel] \ + [http::cookiejar configure -loglevel debug] \ + [http::cookiejar configure -loglevel] \ + [http::cookiejar configure -loglevel error] \ + [http::cookiejar configure -loglevel] +} -cleanup { + http::cookiejar configure -loglevel $old +} -result {info debug debug error error} +test http-cookiejar-2.8 "cookie storage: basics" -setup { + set old [http::cookiejar configure -loglevel] +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + list [http::cookiejar configure -loglevel] \ + [http::cookiejar configure -loglevel d] \ + [http::cookiejar configure -loglevel i] \ + [http::cookiejar configure -loglevel w] \ + [http::cookiejar configure -loglevel e] +} -cleanup { + http::cookiejar configure -loglevel $old +} -result {info debug info warn error} +test http-cookiejar-2.9 "cookie storage: basics" -body { + http::cookiejar configure -off +} -constraints {notOSXtravis sqlite3 cookiejar} -match glob -result * +test http-cookiejar-2.10 "cookie storage: basics" -setup { + set oldval [http::cookiejar configure -offline] +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + http::cookiejar configure -offline true +} -cleanup { + catch {http::cookiejar configure -offline $oldval} +} -result 1 +test http-cookiejar-2.11 "cookie storage: basics" -setup { + set oldval [http::cookiejar configure -offline] +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + http::cookiejar configure -offline nonbool +} -cleanup { + catch {http::cookiejar configure -offline $oldval} +} -returnCodes error -result {expected boolean value but got "nonbool"} +test http-cookiejar-2.12 "cookie storage: basics" -setup { + set oldval [http::cookiejar configure -purgeold] +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + http::cookiejar configure -purge nonint +} -cleanup { + catch {http::cookiejar configure -purgeold $oldval} +} -returnCodes error -result {expected positive integer but got "nonint"} +test http-cookiejar-2.13 "cookie storage: basics" -setup { + set oldval [http::cookiejar configure -domainrefresh] +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + http::cookiejar configure -domainref nonint +} -cleanup { + catch {http::cookiejar configure -domainrefresh $oldval} +} -returnCodes error -result {expected positive integer but got "nonint"} +test http-cookiejar-2.14 "cookie storage: basics" -setup { + set oldval [http::cookiejar configure -domainrefresh] +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + http::cookiejar configure -domainref -42 +} -cleanup { + catch {http::cookiejar configure -domainrefresh $oldval} +} -returnCodes error -result {expected positive integer but got "-42"} +test http-cookiejar-2.15 "cookie storage: basics" -setup { + set oldval [http::cookiejar configure -domainrefresh] + set result unset + set tracer [http::cookiejar create tracer] +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + oo::objdefine $tracer method PostponeRefresh {} { + set ::result set + next + } + http::cookiejar configure -domainref 12345 + return $result +} -cleanup { + $tracer destroy + catch {http::cookiejar configure -domainrefresh $oldval} +} -result set + +test http-cookiejar-3.1 "cookie storage: class" {notOSXtravis sqlite3 cookiejar} { + info object isa object http::cookiejar +} 1 +test http-cookiejar-3.2 "cookie storage: class" {notOSXtravis sqlite3 cookiejar} { + info object isa class http::cookiejar +} 1 +test http-cookiejar-3.3 "cookie storage: class" {notOSXtravis sqlite3 cookiejar} { + lsort [info object methods http::cookiejar] +} {configure} +test http-cookiejar-3.4 "cookie storage: class" {notOSXtravis sqlite3 cookiejar} { + lsort [info object methods http::cookiejar -all] +} {configure create destroy new} +test http-cookiejar-3.5 "cookie storage: class" -setup { + catch {rename ::cookiejar ""} +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + namespace eval :: {http::cookiejar create cookiejar} +} -cleanup { + catch {rename ::cookiejar ""} +} -result ::cookiejar +test http-cookiejar-3.6 "cookie storage: class" -setup { + catch {rename ::cookiejar ""} +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + list [http::cookiejar create ::cookiejar] [info commands ::cookiejar] \ + [::cookiejar destroy] [info commands ::cookiejar] +} -cleanup { + catch {rename ::cookiejar ""} +} -result {::cookiejar ::cookiejar {} {}} +test http-cookiejar-3.7 "cookie storage: class" -setup { + catch {rename ::cookiejar ""} +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + http::cookiejar create ::cookiejar foo bar +} -returnCodes error -cleanup { + catch {rename ::cookiejar ""} +} -result {wrong # args: should be "http::cookiejar create ::cookiejar ?path?"} +test http-cookiejar-3.8 "cookie storage: class" -setup { + catch {rename ::cookiejar ""} + set f [makeFile "" cookiejar] + file delete $f +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + list [file exists $f] [http::cookiejar create ::cookiejar $f] \ + [file exists $f] +} -cleanup { + catch {rename ::cookiejar ""} + removeFile $f +} -result {0 ::cookiejar 1} +test http-cookiejar-3.9 "cookie storage: class" -setup { + catch {rename ::cookiejar ""} + set f [makeFile "bogus content for a database" cookiejar] +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + http::cookiejar create ::cookiejar $f +} -returnCodes error -cleanup { + catch {rename ::cookiejar ""} + removeFile $f +} -match glob -result * +test http-cookiejar-3.10 "cookie storage: class" -setup { + catch {rename ::cookiejar ""} + set dir [makeDirectory cookiejar] +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + http::cookiejar create ::cookiejar $dir +} -returnCodes error -cleanup { + catch {rename ::cookiejar ""} + removeDirectory $dir +} -match glob -result * + +test http-cookiejar-4.1 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar +} -returnCodes error -cleanup { + ::cookiejar destroy +} -result {wrong # args: should be "cookiejar method ?arg ...?"} +test http-cookiejar-4.2 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar ? +} -returnCodes error -cleanup { + ::cookiejar destroy +} -result {unknown method "?": must be destroy, forceLoadDomainData, getCookies, lookup, policyAllow or storeCookie} +test http-cookiejar-4.3 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + lsort [info object methods cookiejar -all] +} -cleanup { + ::cookiejar destroy +} -result {destroy forceLoadDomainData getCookies lookup policyAllow storeCookie} +test http-cookiejar-4.4 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar getCookies +} -returnCodes error -cleanup { + ::cookiejar destroy +} -result {wrong # args: should be "cookiejar getCookies proto host path"} +test http-cookiejar-4.5 "cookie storage" -setup { + http::cookiejar create ::cookiejar +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar getCookies http www.example.com / +} -cleanup { + ::cookiejar destroy +} -result {} +test http-cookiejar-4.6 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar storeCookie +} -returnCodes error -cleanup { + ::cookiejar destroy +} -result {wrong # args: should be "cookiejar storeCookie options"} +test http-cookiejar-4.7 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar storeCookie { + key foo + value bar + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } +} -cleanup { + ::cookiejar destroy +} -result {} +test http-cookiejar-4.8 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar + oo::objdefine ::cookiejar export Database +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar storeCookie { + key foo + value bar + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } + # Poke inside implementation! + cookiejar Database eval {SELECT count(*) FROM sessionCookies} +} -cleanup { + ::cookiejar destroy +} -result 1 +test http-cookiejar-4.9 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar + oo::objdefine ::cookiejar export Database +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar storeCookie { + key foo + value bar + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } + # Poke inside implementation! + cookiejar Database eval {SELECT count(*) FROM persistentCookies} +} -cleanup { + ::cookiejar destroy +} -result 0 +test http-cookiejar-4.10 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar storeCookie [dict replace { + key foo + value bar + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } expires [expr {[clock seconds]+5}]] +} -cleanup { + ::cookiejar destroy +} -result {} +test http-cookiejar-4.11 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar + oo::objdefine ::cookiejar export Database +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar storeCookie [dict replace { + key foo + value bar + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } expires [expr {[clock seconds]+5}]] + # Poke inside implementation! + cookiejar Database eval {SELECT count(*) FROM sessionCookies} +} -cleanup { + ::cookiejar destroy +} -result 0 +test http-cookiejar-4.12 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar + oo::objdefine ::cookiejar export Database +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar storeCookie [dict replace { + key foo + value bar + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } expires [expr {[clock seconds]+5}]] + # Poke inside implementation! + cookiejar Database eval {SELECT count(*) FROM persistentCookies} +} -cleanup { + ::cookiejar destroy +} -result 1 +test http-cookiejar-4.13 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar + set result {} +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + lappend result [cookiejar getCookies http www.example.com /] + cookiejar storeCookie { + key foo + value bar + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } + lappend result [cookiejar getCookies http www.example.com /] +} -cleanup { + ::cookiejar destroy +} -result {{} {foo bar}} +test http-cookiejar-4.14 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar + set result {} +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + lappend result [cookiejar getCookies http www.example.com /] + cookiejar storeCookie [dict replace { + key foo + value bar + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } expires [expr {[clock seconds]+5}]] + lappend result [cookiejar getCookies http www.example.com /] +} -cleanup { + ::cookiejar destroy +} -result {{} {foo bar}} +test http-cookiejar-4.15 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar + set result {} +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + lappend result [cookiejar getCookies http www.example.com /] + cookiejar storeCookie { + key foo + value bar + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } + cookiejar storeCookie [dict replace { + key foo + value bar + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } expires [expr {[clock seconds]+5}]] + lappend result [cookiejar getCookies http www.example.com /] +} -cleanup { + ::cookiejar destroy +} -result {{} {foo bar}} +test http-cookiejar-4.16 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar + set result {} +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + lappend result [cookiejar getCookies http www.example.com /] + cookiejar storeCookie { + key foo1 + value bar + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } + cookiejar storeCookie [dict replace { + key foo2 + value bar + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } expires [expr {[clock seconds]+5}]] + lappend result [lsort -stride 2 [cookiejar getCookies http www.example.com /]] +} -cleanup { + ::cookiejar destroy +} -result {{} {foo1 bar foo2 bar}} +test http-cookiejar-4.17 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar lookup a b c d +} -returnCodes error -cleanup { + ::cookiejar destroy +} -result {wrong # args: should be "cookiejar lookup ?host? ?key?"} +test http-cookiejar-4.18 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar + set result {} +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + lappend result [cookiejar lookup] + lappend result [cookiejar lookup www.example.com] + lappend result [catch {cookiejar lookup www.example.com foo} value] $value + cookiejar storeCookie { + key foo + value bar + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } + lappend result [cookiejar lookup] + lappend result [cookiejar lookup www.example.com] + lappend result [cookiejar lookup www.example.com foo] +} -cleanup { + ::cookiejar destroy +} -result {{} {} 1 {no such key for that host} www.example.com foo bar} +test http-cookiejar-4.19 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar + set result {} +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar storeCookie { + key foo + value bar + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } + cookiejar storeCookie { + key bar + value foo + secure 0 + domain www.example.org + origin www.example.org + path / + hostonly 1 + } + lappend result [lsort [cookiejar lookup]] + lappend result [cookiejar lookup www.example.com] + lappend result [cookiejar lookup www.example.com foo] + lappend result [cookiejar lookup www.example.org] + lappend result [cookiejar lookup www.example.org bar] +} -cleanup { + ::cookiejar destroy +} -result {{www.example.com www.example.org} foo bar bar foo} +test http-cookiejar-4.20 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar + set result {} +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar storeCookie { + key foo1 + value bar1 + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } + cookiejar storeCookie [dict replace { + key foo2 + value bar2 + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } expires [expr {[clock seconds]+5}]] + lappend result [cookiejar lookup] + lappend result [lsort [cookiejar lookup www.example.com]] + lappend result [cookiejar lookup www.example.com foo1] + lappend result [cookiejar lookup www.example.com foo2] +} -cleanup { + ::cookiejar destroy +} -result {www.example.com {foo1 foo2} bar1 bar2} +test http-cookiejar-4.21 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar + set result {} +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar storeCookie { + key foo1 + value bar1 + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } + cookiejar storeCookie { + key foo2 + value bar2 + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } + lappend result [cookiejar lookup] + lappend result [lsort [cookiejar lookup www.example.com]] + lappend result [cookiejar lookup www.example.com foo1] + lappend result [cookiejar lookup www.example.com foo2] +} -cleanup { + ::cookiejar destroy +} -result {www.example.com {foo1 foo2} bar1 bar2} +test http-cookiejar-4.22 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar + set result {} +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar forceLoadDomainData x y z +} -returnCodes error -cleanup { + ::cookiejar destroy +} -result {wrong # args: should be "cookiejar forceLoadDomainData"} +test http-cookiejar-4.23 "cookie storage: instance" -setup { + http::cookiejar create ::cookiejar + set result {} +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar forceLoadDomainData +} -cleanup { + ::cookiejar destroy +} -result {} +test http-cookiejar-4.23.a {cookie storage: instance} -setup { + set off [http::cookiejar configure -offline] +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + http::cookiejar configure -offline 1 + [http::cookiejar create ::cookiejar] destroy +} -cleanup { + catch {::cookiejar destroy} + http::cookiejar configure -offline $off +} -result {} +test http-cookiejar-4.23.b {cookie storage: instance} -setup { + set off [http::cookiejar configure -offline] +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + http::cookiejar configure -offline 0 + [http::cookiejar create ::cookiejar] destroy +} -cleanup { + catch {::cookiejar destroy} + http::cookiejar configure -offline $off +} -result {} + +test http-cookiejar-5.1 "cookie storage: constraints" -setup { + http::cookiejar create ::cookiejar + cookiejar forceLoadDomainData +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar storeCookie { + key foo + value bar + secure 0 + domain com + origin com + path / + hostonly 1 + } + cookiejar lookup +} -cleanup { + ::cookiejar destroy +} -result {} +test http-cookiejar-5.2 "cookie storage: constraints" -setup { + http::cookiejar create ::cookiejar + cookiejar forceLoadDomainData +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar storeCookie { + key foo + value bar + secure 0 + domain foo.example.com + origin bar.example.org + path / + hostonly 1 + } + cookiejar lookup +} -cleanup { + ::cookiejar destroy +} -result {} +test http-cookiejar-5.3 "cookie storage: constraints" -setup { + http::cookiejar create ::cookiejar + cookiejar forceLoadDomainData +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar storeCookie { + key foo1 + value bar + secure 0 + domain com + origin www.example.com + path / + hostonly 1 + } + cookiejar storeCookie { + key foo2 + value bar + secure 0 + domain example.com + origin www.example.com + path / + hostonly 1 + } + cookiejar lookup +} -cleanup { + ::cookiejar destroy +} -result {example.com} +test http-cookiejar-5.4 "cookie storage: constraints" -setup { + http::cookiejar create ::cookiejar + cookiejar forceLoadDomainData +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar storeCookie { + key foo + value bar1 + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } + cookiejar storeCookie { + key foo + value bar2 + secure 0 + domain example.com + origin www.example.com + path / + hostonly 1 + } + lsort [cookiejar lookup] +} -cleanup { + ::cookiejar destroy +} -result {example.com www.example.com} +test http-cookiejar-5.5 "cookie storage: constraints" -setup { + http::cookiejar create ::cookiejar + cookiejar forceLoadDomainData +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + cookiejar storeCookie { + key foo1 + value 1 + secure 0 + domain com + origin www.example.com + path / + hostonly 0 + } + cookiejar storeCookie { + key foo2 + value 2 + secure 0 + domain com + origin www.example.com + path / + hostonly 1 + } + cookiejar storeCookie { + key foo3 + value 3 + secure 0 + domain example.com + origin www.example.com + path / + hostonly 0 + } + cookiejar storeCookie { + key foo4 + value 4 + secure 0 + domain example.com + origin www.example.com + path / + hostonly 1 + } + cookiejar storeCookie { + key foo5 + value 5 + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 0 + } + cookiejar storeCookie { + key foo6 + value 6 + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } + cookiejar storeCookie { + key foo7 + value 7 + secure 1 + domain www.example.com + origin www.example.com + path / + hostonly 0 + } + cookiejar storeCookie { + key foo8 + value 8 + secure 1 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } + cookiejar storeCookie { + key foo9 + value 9 + secure 0 + domain sub.www.example.com + origin www.example.com + path / + hostonly 1 + } + list [cookiejar getCookies http www.example.com /] \ + [cookiejar getCookies http www2.example.com /] \ + [cookiejar getCookies https www.example.com /] \ + [cookiejar getCookies http sub.www.example.com /] +} -cleanup { + ::cookiejar destroy +} -result {{foo3 3 foo6 6} {foo3 3} {foo3 3 foo6 6 foo8 8} {foo3 3 foo5 5}} + +test http-cookiejar-6.1 "cookie storage: expiry and lookup" -setup { + http::cookiejar create ::cookiejar + oo::objdefine cookiejar export PurgeCookies + set result {} + proc values cookies { + global result + lappend result [lsort [lmap {k v} $cookies {set v}]] + } +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + values [cookiejar getCookies http www.example.com /] + cookiejar storeCookie { + key foo + value session + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } + values [cookiejar getCookies http www.example.com /] + cookiejar storeCookie [dict replace { + key foo + value cookie + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } expires [expr {[clock seconds]+1}]] + values [cookiejar getCookies http www.example.com /] + cookiejar storeCookie { + key foo + value session-global + secure 0 + domain example.com + origin www.example.com + path / + hostonly 0 + } + values [cookiejar getCookies http www.example.com /] + after 2500 + update + values [cookiejar getCookies http www.example.com /] + cookiejar PurgeCookies + values [cookiejar getCookies http www.example.com /] + cookiejar storeCookie { + key foo + value go-away + secure 0 + domain example.com + origin www.example.com + path / + hostonly 0 + expires 0 + } + values [cookiejar getCookies http www.example.com /] +} -cleanup { + ::cookiejar destroy +} -result {{} session cookie {cookie session-global} {cookie session-global} session-global {}} + +test http-cookiejar-7.1 "cookie storage: persistence of persistent cookies" -setup { + catch {rename ::cookiejar ""} + set f [makeFile "" cookiejar] + file delete $f +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + http::cookiejar create ::cookiejar $f + ::cookiejar destroy + http::cookiejar create ::cookiejar $f +} -cleanup { + catch {rename ::cookiejar ""} + removeFile $f +} -result ::cookiejar +test http-cookiejar-7.2 "cookie storage: persistence of persistent cookies" -setup { + catch {rename ::cookiejar ""} + set f [makeFile "" cookiejar] + file delete $f + set result {} +} -constraints {notOSXtravis sqlite3 cookiejar} -body { + http::cookiejar create ::cookiejar $f + cookiejar storeCookie [dict replace { + key foo + value cookie + secure 0 + domain www.example.com + origin www.example.com + path / + hostonly 1 + } expires [expr {[clock seconds]+1}]] + lappend result [::cookiejar getCookies http www.example.com /] + ::cookiejar destroy + http::cookiejar create ::cookiejar + lappend result [::cookiejar getCookies http www.example.com /] + ::cookiejar destroy + http::cookiejar create ::cookiejar $f + lappend result [::cookiejar getCookies http www.example.com /] +} -cleanup { + catch {rename ::cookiejar ""} + removeFile $f +} -result {{foo cookie} {} {foo cookie}} + +::tcltest::cleanupTests + +# Local variables: +# mode: tcl +# End: |