Revision 1c65dd5c
Added by koszko over 1 year ago
test/unit/test_indexeddb.py | ||
---|---|---|
6 | 6 |
|
7 | 7 |
# This file is part of Haketilo |
8 | 8 |
# |
9 |
# Copyright (C) 2021,2022 Wojtek Kosior <koszko@koszko.org> |
|
9 |
# Copyright (C) 2021, 2022 Wojtek Kosior <koszko@koszko.org>
|
|
10 | 10 |
# |
11 | 11 |
# This program is free software: you can redistribute it and/or modify |
12 | 12 |
# it under the terms of the CC0 1.0 Universal License as published by |
... | ... | |
73 | 73 |
.then(finalize_transaction); |
74 | 74 |
returnval(promise); |
75 | 75 |
}''', |
76 |
sample_item, sample_files_by_hash)
|
|
76 |
sample_item, {'sha256': sample_files_by_sha256})
|
|
77 | 77 |
|
78 | 78 |
database_contents = get_db_contents(execute_in_page) |
79 | 79 |
|
80 | 80 |
assert len(database_contents['files']) == 4 |
81 |
assert all([sample_files_by_hash[file['hash_key']] == file['contents']
|
|
81 |
assert all([sample_files_by_sha256[file['sha256']] == file['contents']
|
|
82 | 82 |
for file in database_contents['files']]) |
83 | 83 |
assert all([len(file) == 2 for file in database_contents['files']]) |
84 | 84 |
|
85 | 85 |
assert len(database_contents['file_uses']) == 4 |
86 | 86 |
assert all([uses['uses'] == 1 for uses in database_contents['file_uses']]) |
87 |
assert set([uses['hash_key'] for uses in database_contents['file_uses']]) \
|
|
88 |
== set([file['hash_key'] for file in database_contents['files']])
|
|
87 |
assert set([uses['sha256'] for uses in database_contents['file_uses']]) \
|
|
88 |
== set([file['sha256'] for file in database_contents['files']])
|
|
89 | 89 |
|
90 | 90 |
assert database_contents['mapping'] == [] |
91 | 91 |
assert database_contents['resource'] == [sample_item] |
... | ... | |
93 | 93 |
# See if trying to add an item without providing all its files ends in an |
94 | 94 |
# exception and aborts the transaction as it should. |
95 | 95 |
sample_item['scripts'].append(sample_file_ref('combined.js')) |
96 |
incomplete_files = {**sample_files_by_hash}
|
|
97 |
incomplete_files.pop(sample_files['combined.js']['hash_key'])
|
|
96 |
incomplete_files = {**sample_files_by_sha256}
|
|
97 |
incomplete_files.pop(sample_files['combined.js']['sha256'])
|
|
98 | 98 |
exception = execute_in_page( |
99 | 99 |
'''{ |
100 | 100 |
const args = arguments; |
... | ... | |
112 | 112 |
} |
113 | 113 |
returnval(try_add_item()); |
114 | 114 |
}''', |
115 |
sample_item, incomplete_files)
|
|
115 |
sample_item, {'sha256': incomplete_files})
|
|
116 | 116 |
|
117 | 117 |
previous_database_contents = database_contents |
118 | 118 |
database_contents = get_db_contents(execute_in_page) |
119 | 119 |
|
120 | 120 |
assert 'file not present' in exception |
121 | 121 |
for key, val in database_contents.items(): |
122 |
keyfun = lambda item: item.get('hash_key') or item['identifier']
|
|
122 |
keyfun = lambda item: item.get('sha256') or item['identifier']
|
|
123 | 123 |
assert sorted(previous_database_contents[key], key=keyfun) \ |
124 | 124 |
== sorted(val, key=keyfun) |
125 | 125 |
|
... | ... | |
132 | 132 |
.then(finalize_transaction); |
133 | 133 |
returnval(promise); |
134 | 134 |
}''', |
135 |
sample_item, sample_files_by_hash)
|
|
135 |
sample_item, {'sha256': sample_files_by_sha256})
|
|
136 | 136 |
|
137 | 137 |
database_contents = get_db_contents(execute_in_page) |
138 | 138 |
|
... | ... | |
141 | 141 |
sample_files_list = [sample_files[name] for name in names] |
142 | 142 |
uses_list = [1, 2, 1, 1, 1] |
143 | 143 |
|
144 |
uses = dict([(uses['hash_key'], uses['uses'])
|
|
144 |
uses = dict([(uses['sha256'], uses['uses'])
|
|
145 | 145 |
for uses in database_contents['file_uses']]) |
146 |
assert uses == dict([(file['hash_key'], nr)
|
|
146 |
assert uses == dict([(file['sha256'], nr)
|
|
147 | 147 |
for file, nr in zip(sample_files_list, uses_list)]) |
148 | 148 |
|
149 |
files = dict([(file['hash_key'], file['contents'])
|
|
149 |
files = dict([(file['sha256'], file['contents'])
|
|
150 | 150 |
for file in database_contents['files']]) |
151 |
assert files == dict([(file['hash_key'], file['contents'])
|
|
151 |
assert files == dict([(file['sha256'], file['contents'])
|
|
152 | 152 |
for file in sample_files_list]) |
153 | 153 |
|
154 | 154 |
del database_contents['resource'][0]['source_copyright'][0]['extra_prop'] |
... | ... | |
174 | 174 |
sample_files_list = [sample_files[name] for name in names] |
175 | 175 |
uses_list = [1, 1] |
176 | 176 |
|
177 |
uses = dict([(uses['hash_key'], uses['uses'])
|
|
177 |
uses = dict([(uses['sha256'], uses['uses'])
|
|
178 | 178 |
for uses in results[0]['file_uses']]) |
179 |
assert uses == dict([(file['hash_key'], 1) for file in sample_files_list])
|
|
179 |
assert uses == dict([(file['sha256'], 1) for file in sample_files_list])
|
|
180 | 180 |
|
181 |
files = dict([(file['hash_key'], file['contents'])
|
|
181 |
files = dict([(file['sha256'], file['contents'])
|
|
182 | 182 |
for file in results[0]['files']]) |
183 |
assert files == dict([(file['hash_key'], file['contents'])
|
|
183 |
assert files == dict([(file['sha256'], file['contents'])
|
|
184 | 184 |
for file in sample_files_list]) |
185 | 185 |
|
186 | 186 |
assert results[0]['resource'] == [] |
... | ... | |
206 | 206 |
'0.1.1': sample_mapping |
207 | 207 |
} |
208 | 208 |
}, |
209 |
'files': sample_files_by_hash |
|
209 |
'file': { |
|
210 |
'sha256': sample_files_by_sha256 |
|
211 |
} |
|
210 | 212 |
} |
211 | 213 |
|
212 | 214 |
clear_indexeddb(execute_in_page) |
... | ... | |
350 | 352 |
'0.1.1': sample_mapping |
351 | 353 |
} |
352 | 354 |
}, |
353 |
'files': sample_files_by_hash |
|
355 |
'file': { |
|
356 |
'sha256': sample_files_by_sha256 |
|
357 |
} |
|
354 | 358 |
} |
355 | 359 |
driver.switch_to.window(windows[1]) |
356 | 360 |
execute_in_page('initial_data = arguments[0];', initial_data) |
... | ... | |
423 | 427 |
'0.1.1': sample_mapping2 |
424 | 428 |
} |
425 | 429 |
}, |
426 |
'files': sample_files_by_hash |
|
430 |
'file': { |
|
431 |
'sha256': sample_files_by_sha256 |
|
432 |
} |
|
427 | 433 |
} |
428 | 434 |
execute_in_page('returnval(save_items(arguments[0]));', sample_data) |
429 | 435 |
execute_in_page('returnval(set_setting("option22", "abc"));') |
Also available in: Unified diff
adapt to changes in file path format
From now on we assume Hydrilla serves file contents at 'file/sha256/' instead of 'file/sha256-'.
With this commit we also stop using the "hash_key" property internally.