|
1 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
2 * License, v. 2.0. If a copy of the MPL was not distributed with this file, |
|
3 * You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
4 |
|
5 function run_test() |
|
6 { |
|
7 // We're testing migration to this version from one version below |
|
8 var targetVersion = 9; |
|
9 |
|
10 // First import the downloads.sqlite file |
|
11 importDatabaseFile("v" + (targetVersion - 1) + ".sqlite"); |
|
12 |
|
13 // Init the download manager which will try migrating to the new version |
|
14 var dm = Cc["@mozilla.org/download-manager;1"]. |
|
15 getService(Ci.nsIDownloadManager); |
|
16 var dbConn = dm.DBConnection; |
|
17 |
|
18 // Check schema version |
|
19 do_check_true(dbConn.schemaVersion >= targetVersion); |
|
20 |
|
21 // Make sure all the columns are there |
|
22 var stmt = dbConn.createStatement( |
|
23 "SELECT name, source, target, tempPath, startTime, endTime, state, " + |
|
24 "referrer, entityID, currBytes, maxBytes, mimeType, " + |
|
25 "preferredApplication, preferredAction, autoResume, guid " + |
|
26 "FROM moz_downloads " + |
|
27 "WHERE id = 28"); |
|
28 stmt.executeStep(); |
|
29 |
|
30 // This data is based on the original values in the table |
|
31 var data = [ |
|
32 "firefox-3.0a9pre.en-US.linux-i686.tar.bz2", |
|
33 "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/firefox-3.0a9pre.en-US.linux-i686.tar.bz2", |
|
34 "file:///Users/Ed/Desktop/firefox-3.0a9pre.en-US.linux-i686.tar.bz2", |
|
35 "/Users/Ed/Desktop/+EZWafFQ.bz2.part", |
|
36 1192469856209164, |
|
37 1192469877017396, |
|
38 Ci.nsIDownloadManager.DOWNLOAD_FINISHED, |
|
39 "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/", |
|
40 "%2210e66c1-8a2d6b-9b33f380%22/9055595/Mon, 15 Oct 2007 11:45:34 GMT", |
|
41 1210772, |
|
42 9055595, |
|
43 "application/x-bzip2", |
|
44 "AAAAAAGqAAIAAQxNYWNpbnRvc2ggSEQAAAAAAAAAAAAAAAAAAAC+91IESCsAAAAHc5UUU3R1ZmZJdCBFeHBhbmRlci5hcHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdzmb3SGI8AAAAAAAAAAP////8AAAkgAAAAAAAAAAAAAAAAAAAAFFN0dWZmSXQgU3RhbmRhcmQgOS4wABAACAAAvveYVAAAABEACAAAvdJs7wAAAAEACAAHc5UAAAAWAAIAQ01hY2ludG9zaCBIRDpBcHBsaWNhdGlvbnM6U3R1ZmZJdCBTdGFuZGFyZCA5LjA6U3R1ZmZJdCBFeHBhbmRlci5hcHAAAA4AKgAUAFMAdAB1AGYAZgBJAHQAIABFAHgAcABhAG4AZABlAHIALgBhAHAAcAAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASADZBcHBsaWNhdGlvbnMvU3R1ZmZJdCBTdGFuZGFyZCA5LjAvU3R1ZmZJdCBFeHBhbmRlci5hcHAAEwABLwD//wAA", |
|
45 2, |
|
46 0, |
|
47 // For the new columns added, check that default values are sensible |
|
48 'ignored-value' |
|
49 ]; |
|
50 |
|
51 // Make sure the values are correct after the migration |
|
52 var i = 0; |
|
53 do_check_eq(data[i], stmt.getString(i++)); |
|
54 do_check_eq(data[i], stmt.getUTF8String(i++)); |
|
55 do_check_eq(data[i], stmt.getUTF8String(i++)); |
|
56 do_check_eq(data[i], stmt.getString(i++)); |
|
57 do_check_eq(data[i], stmt.getInt64(i++)); |
|
58 do_check_eq(data[i], stmt.getInt64(i++)); |
|
59 do_check_eq(data[i], stmt.getInt32(i++)); |
|
60 do_check_eq(data[i], stmt.getUTF8String(i++)); |
|
61 do_check_eq(data[i], stmt.getUTF8String(i++)); |
|
62 do_check_eq(data[i], stmt.getInt64(i++)); |
|
63 do_check_eq(data[i], stmt.getInt64(i++)); |
|
64 do_check_eq(data[i], stmt.getUTF8String(i++)); |
|
65 do_check_eq(data[i], stmt.getUTF8String(i++)); |
|
66 do_check_eq(data[i], stmt.getInt32(i++)); |
|
67 do_check_eq(data[i], stmt.getInt32(i++)); |
|
68 do_check_true(/^[a-zA-Z0-9\-_]{12}$/.test(stmt.getString(i++))); |
|
69 |
|
70 stmt.reset(); |
|
71 stmt.finalize(); |
|
72 |
|
73 cleanup(); |
|
74 } |