Commit graph

428 commits

Author SHA1 Message Date
Inex Code ad9384c850 fix(graphql): backup quotas field typing 2023-08-30 12:03:19 +03:00
Houkime 9fdc536f9f BROKEN(backups): hooking up quotas to API fails. AutobackupQuotas needs to be an input type, but if input type, it fails because it needs to be an Output type, which is not documented 2023-08-28 18:24:29 +00:00
Houkime a75a102df6 test(backups): test quotas with actual backups 2023-08-28 17:15:27 +00:00
Houkime 9207f5385c feature(backups): actual finegrained quotas 2023-08-28 17:02:45 +00:00
Inex Code ada89a2494 Merge branch 'master' into fix-restores-wrt-service-status 2023-08-25 19:01:16 +03:00
Houkime 0a852d8b50 fix(backups): consider failing services MORE and not try to stop them 2023-08-23 13:39:12 +00:00
Houkime b2c7e8b73a feature(backups): caps for autobackups 2023-08-21 12:45:31 +00:00
Houkime 1b9761293c test(backup): test reasons 2023-08-21 11:30:35 +00:00
Houkime 027a37bb47 feature(backup): remember the reason for making a snapshot 2023-08-21 11:11:56 +00:00
Houkime d621ca6449 refactor(backups): clean up unused mounting tools 2023-08-14 12:50:45 +00:00
Houkime c89f9cf89d feature(backups): do not rely on mounting 2023-08-14 12:43:44 +00:00
Houkime 69f6e62877 test(backups): more checks regarding tmpdirs and mounting 2023-08-14 11:59:44 +00:00
Houkime 2c9011cc87 fix(backups): robustness against stale locks: everything else 2023-08-09 15:18:20 +00:00
Houkime 0eb70e1551 fix(backups): robustness against stale locks: snapshot sizing 2023-08-09 14:46:27 +00:00
Houkime 26ab7b4d7b fix(backups): robustness against stale locks: is_initted 2023-08-09 14:27:14 +00:00
Houkime eca4b26a31 fix(backups): robustness against stale locks: backing up 2023-08-09 13:47:18 +00:00
Houkime 752a0b807e feature(backups): lock and unlock at will 2023-08-07 13:33:10 +00:00
Inex Code e6189e4e73 Merge branch 'master' into backups-forget 2023-08-04 12:46:08 +03:00
Houkime 2934e2beca test(backups): test forgetting via API 2023-07-28 11:32:48 +00:00
Inex Code 829915029d test: Add test for getting root block device 2023-07-28 02:36:10 +03:00
Houkime 00317cc7e4 test(backups): erase repos between tests 2023-07-26 16:52:58 +00:00
Houkime cfa7f4ae59 feature(backups): add full repo erasure capability 2023-07-26 16:45:08 +00:00
Houkime ffec344ba8 test(backups): make the test repo overridable by envs 2023-07-26 14:26:04 +00:00
Houkime aa7cc71557 feature(backups):add a function to set provider from env 2023-07-26 11:54:17 +00:00
Houkime e9bb6d9973 test(backups):check that snapshot cache invalidation invalidates both ways. 2023-07-26 10:09:35 +00:00
Houkime 26488aa12f fix(backup):force backup function to return same length ids as when getting snapshots 2023-07-21 11:11:24 +00:00
Inex Code b01247bc55 refactor: remove legacy backups implementations 2023-07-20 20:11:42 +03:00
Houkime f4ac3d29a9 feature(backup):remove code for finegrained autobackup control 2023-07-19 15:36:25 +00:00
Houkime 466160dbf9 feature(backup):disable finegrain control over services to back up 2023-07-19 15:36:25 +00:00
Inex Code 3067d353d8 fix(backups): Do not remove failsafe snapshot after recovery 2023-07-19 15:59:29 +03:00
Houkime 926d0c27c5 test(backup): test moving preventing backups 2023-07-14 11:41:03 +00:00
Houkime e43478d437 feature(backups): stop services before restores 2023-07-12 16:53:49 +00:00
Houkime 7af7600599 feature(backups): stop services before backups 2023-07-12 16:43:26 +00:00
Houkime de8ef744eb refactor(backups): make a StoppedService context manager 2023-07-12 15:14:54 +00:00
Houkime 713296c520 test(backups): make delay settable per dummyservice 2023-07-12 12:27:55 +00:00
Houkime e7a6700522 test(backups): test async service start n stop simulation 2023-07-12 12:10:40 +00:00
Houkime 9075afd38a test(backups): test out that pre-restore backup plays nice with jobs 2023-07-07 12:50:20 +00:00
Houkime 53bb5cc4e2 feature(backups): forgetting snapshots 2023-07-05 13:13:30 +00:00
Houkime 3dc6fb91f2 refactor(backups): download a copy before replacing original 2023-07-03 20:41:52 +00:00
Houkime b6eb27dc5e feature(backups): mounting a repo 2023-07-03 15:32:00 +00:00
Houkime c5088e0e2c test(backups): remove the 100mb file after test 2023-07-03 15:32:00 +00:00
Houkime 953860a02c refactor(backups): move syncing (non-restic) into backup utils 2023-07-03 15:32:00 +00:00
Houkime 08cc7740b3 test(backups): actually list folders 2023-07-03 15:32:00 +00:00
Houkime 9793201ca1 feature(backups): a wrapper for rclone sync 2023-07-03 15:32:00 +00:00
Inex Code b480c84041 style: fix styling 2023-06-29 13:44:29 +03:00
Houkime cd2e9d3ba3 fix(jobs): make finishing the job set progress to 100 2023-06-28 13:22:53 +00:00
Houkime 3ee90617ba test(backup): make large testfile larger 2023-06-28 13:06:03 +00:00
Houkime e4865aa094 fix(services): proper backup progress reporting 2023-06-28 11:45:07 +00:00
Houkime ae16a527a2 refactor(backups): rename service_snapshot_size to snapshot_restored_size 2023-06-26 19:41:26 +00:00
Houkime b9be0be6a2 refactor(backups): privatize assert_restorable and restore_snapshot_from_id 2023-06-26 18:42:26 +00:00
Houkime 1593474dc1 refactor(backups): make redis and json provider related lowlevels private 2023-06-26 18:20:22 +00:00
Houkime 2f71469f39 refactoring(backups): backuper -> backupper 2023-06-23 12:04:33 +00:00
Inex Code e7e0fdc4a1 refactor(backups): fix typing errors 2023-06-23 12:40:10 +03:00
Inex Code c6919293b6 refactor(api): Group mutations
I've learned that there is no problem in grouping mutations like we do with queries.
This is a big mistake from my side, now we have legacy not so conveniently placed endpoints.
I've grouped all mutations, left the copies of old ones flattened in the root for backwards compatibility.
We will migrate to mutation groups on client side, and backups now only use grouped mutations.
Tests are updated.
2023-06-21 06:46:56 +03:00
Houkime e3a87f1d98 test(backups): ensure asking to reload snaps does not explode the server 2023-06-19 14:12:50 +00:00
Houkime 25f3115c05 test(backups): setting autobackup period 2023-06-19 13:28:02 +00:00
Houkime 612a46ee42 feature(backups): actually dealing with situation when the provider is not configured 2023-06-19 11:09:10 +00:00
Houkime f02e27cf06 test(backups): add a backend json reset test 2023-06-16 15:19:22 +00:00
Houkime 79c3b9598c feature(backups): resetting json config too 2023-06-16 15:09:39 +00:00
Houkime 8e1e37c766 test(backups): preliminary test of repo reset 2023-06-16 14:33:48 +00:00
Houkime 33c60f971d test(backups): test reinitting repository 2023-06-16 13:43:41 +00:00
Houkime 9e0b0d8caa refactor(backups): make localfile repos normal 2023-06-14 14:07:51 +00:00
Houkime cbedd196e4 fix(backups): non-nullable service when backing up 2023-06-14 13:06:32 +00:00
Houkime 4862cdc72f test(backups): test restore 2023-06-14 13:00:39 +00:00
Houkime 17c7dffb07 test(backups): use get_data 2023-06-14 12:41:45 +00:00
Houkime 39cd4b714b test(backups): check snapshots getting created 2023-06-14 12:35:41 +00:00
Houkime 92322d8fad test(backups): test dummy service compliance 2023-06-14 12:08:07 +00:00
Houkime aa9d082adc test(backups): display errors from api 2023-06-14 11:54:24 +00:00
Houkime f1654c699c fix(backups): shorten snapshot query signature 2023-06-14 11:52:57 +00:00
Houkime 928f026e7c test(backups): snapshot query 2023-06-14 11:14:52 +00:00
Houkime 5fbfaa73ea feat(tokens-repo): add clone() method 2023-06-14 14:02:23 +03:00
Houkime 158c1f13a6 refactor(tokens-repo): switch token backend to redis
And use timezone-aware comparisons for expiry checks
2023-06-14 14:02:23 +03:00
Houkime 9cc6e304c0 test(tokens-repo): remove device order dependence from graphql test__api 2023-06-14 14:02:23 +03:00
Houkime e5756a0dd1 test(tokens-repo): cleanup recovery tests 2023-06-14 14:02:23 +03:00
Houkime 72fdd412d9 test(tokens-repo): complete the recovery test rework 2023-06-14 14:02:23 +03:00
Houkime 0b28fa2637 test(tokens-repo): rework limited uses test 2023-06-14 14:02:23 +03:00
Houkime 2d6406c8c1 test(tokens-repo): rework recovery expiration in the past 2023-06-14 14:02:23 +03:00
Houkime 18f5ff815c test(tokens-repo): rework expiring recovery key tests 2023-06-14 14:02:23 +03:00
Houkime ce4fbdae0a test(tokens-repo): check for token existense in recovery tests 2023-06-14 14:02:23 +03:00
Houkime de27032191 test(tokens-repo): move token utils to graphql common 2023-06-14 14:02:23 +03:00
Houkime 137ae58b42 test(tokens-repo): break out using recovery key 2023-06-14 14:02:23 +03:00
Houkime 92b2a67479 test(tokens-repo): use get recovery status in test of recovery use 2023-06-14 14:02:23 +03:00
Houkime 6cb9cc6d03 test(tokens-repo): use assert recent 2023-06-14 14:02:23 +03:00
Houkime 851d90b30c test(tokens-repo): break out getting recovery key 2023-06-14 14:02:23 +03:00
Houkime 503c9c99ef test(tokens-repo): break out getting status 2023-06-14 14:02:23 +03:00
Houkime d09cd1bbe1 test(tokens-repo): use assert_empty consistently 2023-06-14 14:02:22 +03:00
Houkime 1305144112 test(tokens-repo): complete untying graphql device tests from json 2023-06-14 14:02:22 +03:00
Houkime f5faf84a2b test(tokens-repo): move timewarping to test commons 2023-06-14 14:02:22 +03:00
Houkime 0aaa90f54a test(tokens-repo): shrink invalid new device test 2023-06-14 14:02:22 +03:00
Houkime 592d62f53f test(tokens-repo): untie double new device auth from json 2023-06-14 14:02:22 +03:00
Houkime 367ba51c9d test(tokens-repo): untie authorize new device from json 2023-06-14 14:02:22 +03:00
Houkime e739921835 test(tokens-repo): untie get and delete new device from json 2023-06-14 14:02:22 +03:00
Houkime 102d6b1c5c test(tokens-repo): delete get new device key standalone test
we can only see if device key is valid by using it or deleting it.
another test does it
2023-06-14 14:02:22 +03:00
Houkime 6eb5800e4e test(tokens-repo): untie refresh token testing from token repo 2023-06-14 14:02:22 +03:00
Houkime 469f9d292d test(tokens-repo): make sure we try to delete the token we authed with 2023-06-14 14:02:22 +03:00
Houkime ba5f91b000 test(tokens-repo): apply assert_ok and assert_error() 2023-06-14 14:02:22 +03:00
Houkime 4676e364a6 test(tokens-repo): break out assert_data() 2023-06-14 14:02:22 +03:00
Houkime 5a1b48fa3d test(tokens-repo): break out assert_empty() 2023-06-14 14:02:22 +03:00
Houkime 7f5236701e test(tokens-repo): break out assert_ok() and assert_errorcode() in graphql 2023-06-14 14:02:22 +03:00
Houkime d8c78cc14c test(tokens-repo): untie token deletion tests from json 2023-06-14 14:02:22 +03:00
Houkime d26d115172 test(tokens-repo): break out assert_original() in graphql device tests 2023-06-14 14:02:22 +03:00
Houkime 2f707cc0cc test(tokens-repo): delete extraneous test token content copies 2023-06-14 14:02:22 +03:00
Houkime 00ba76c074 refactor(tokens-repo): delete a stray comment 2023-06-14 14:02:22 +03:00
Houkime 824b018487 test(tokens-repo): make shared test token state use token repo api for loading 2023-06-14 14:02:22 +03:00
Houkime 8f645113e2 test(tokens-repo): new assert_original(), no more json 2023-06-14 14:02:22 +03:00
Houkime f45567b87b fix(tokens-repo): readd gitkeep to services data folder after rebase 2023-06-14 14:02:22 +03:00
Houkime e55a55ef6f test(tokens-repo): beautify test_auth.py 2023-06-14 14:02:22 +03:00
Houkime 02bfffa75f test(tokens-repo): refactor the rest of auth tests 2023-06-14 14:02:22 +03:00
Houkime 42fa5fe524 test(tokens-repo): allow ading uses in a helper recovery function 2023-06-14 14:02:22 +03:00
Houkime 3aa3d197e2 test(tokens-repo): use mock time for recovery tokens expiration test 2023-06-14 14:02:22 +03:00
Houkime e0bd6efcb2 test(tokens-repo): use new recovery functions 2023-06-14 14:02:22 +03:00
Houkime 203940096c test(tokens-repo): break out recovery token use 2023-06-14 14:02:22 +03:00
Houkime ac4d4e0127 test(tokens-repo): break out recovery time operations 2023-06-14 14:02:22 +03:00
Houkime 548f47963a test(tokens-repo): break out obtaining recovery tokens 2023-06-14 14:02:22 +03:00
Houkime 0239f3174e test(tokens-repo): do not read json in generate recovery test 2023-06-14 14:02:22 +03:00
Houkime 74777c4343 test(tokens-repo): fix typo in contets 2023-06-14 14:02:22 +03:00
Houkime 0bf18603d4 test(tokens-repo): travel in time to check expiration 2023-06-14 14:02:22 +03:00
Houkime 458c4fd28a test(tokens-repo): make new device tests a bit more readable 2023-06-14 14:02:22 +03:00
Houkime bfcec3d51d test(tokens-repo): break out checking token validity 2023-06-14 14:02:22 +03:00
Houkime 179078aed2 test(tokens-repo): break out getting new device token 2023-06-14 14:02:22 +03:00
Houkime 1d6275b75b test(tokens-repo): delete standalone get new device test
At rest api level, we can only check the existence of new device token
by using it, and this test already exists.
2023-06-14 14:02:22 +03:00
Houkime 07fe2f8a55 test(tokens-repo): check refreshed token validity by trying to auth 2023-06-14 14:02:22 +03:00
Houkime 270e569af2 test(tokens-repo): use rest token info in token deletion test 2023-06-14 14:02:22 +03:00
Houkime 7e0e6015cf test(tokens-repo): break out rest_get_token_info() 2023-06-14 14:02:22 +03:00
Houkime f542c1e6c7 test(tokens-repo): break out assert_original() in rest 2023-06-14 14:02:22 +03:00
Houkime e125f3a4b1 test(tokens-repo): remove test tokens.json files
except for one which will temporarily remain
gitkeeps are to prevent shared_datadir from erroring out in a freshly
cloned repo. for now huey database and jobs fixtures use shared_datadir
2023-06-14 14:02:22 +03:00
Houkime 889c7eee6a test(tokens-repo): offload empty_keys fixture to json tests 2023-06-14 14:02:22 +03:00
Houkime 8065921862 test(tokens-repo): make empty_tokens fixture, even more minimal 2023-06-14 14:02:22 +03:00
Houkime 3e7ea01a42 test(tokens-repo): make empty_keys fixture (and derived) shareable 2023-06-14 14:02:22 +03:00
Houkime c47977c100 test(backups): actual testfile 2023-06-14 10:16:53 +00:00
Houkime d9bde6930b fix(backups): register queries 2023-06-14 10:16:53 +00:00
Houkime 9d5335f62c feature(backups): feature(backups): return a snapshot from start_backup 2023-06-05 11:26:58 +00:00
Houkime 4b07d4de41 refactor(backups): global snapshots 2023-05-31 13:16:08 +00:00
Houkime c3696d3a4b feature(backups): global init instead of per-service 2023-05-29 16:50:14 +00:00
Houkime 0dc6f74754 fix(backups): make sure location and credentials get properly passed around 2023-05-22 16:01:57 +00:00
Houkime b1d0a80963 feature(backups): realtime progress updates of backups 2023-05-17 20:27:42 +00:00
Houkime 54a8e0b2b0 test(backups): break out obtaining finished jobs 2023-05-17 20:27:42 +00:00
Houkime e25aa2cb33 test(backups): test that the job has run 2023-05-17 20:27:42 +00:00
Houkime 396b42b69c test(backups): test jobs starting and finishing when from Backups 2023-05-17 20:27:42 +00:00
Houkime d340b0ca67 test(backups): break out a finished job checker 2023-05-17 20:27:42 +00:00
Houkime cb1dd1011e test(backups): assure that jobs are created and not duplicated 2023-05-17 20:27:42 +00:00
Houkime d1425561d9 feature(backups): restore task 2023-05-17 20:27:42 +00:00
Houkime 72f4fc8ae7 test(backups): test local secrets 2023-05-17 20:27:42 +00:00
Houkime dde86725b9 test(services): test derivation of foldermoves 2023-05-17 20:27:42 +00:00
Houkime ba72fadb8d test(services): test that we indeed return correct folders and owned folders from real services 2023-05-17 20:27:42 +00:00
Houkime ad66513f27 refactor(services): add folder owner derivation 2023-05-17 20:27:41 +00:00
Houkime 48359ffd20 test(backups): test 2-folder restoration 2023-05-17 20:27:41 +00:00
Houkime a68e94fad3 test(backups): actually back up 2 folders 2023-05-17 20:27:41 +00:00
Houkime 30ac990985 refactor(backups): set a list of folders for our dummy service 2023-05-17 20:27:41 +00:00
Houkime 08739f7ca8 refactor(backups): make api accept a list of folders 2023-05-17 20:27:41 +00:00
Houkime 919ba1ad03 refactor(backups): make a dedicated get_folders() function 2023-05-17 20:27:41 +00:00
Houkime 1b1052d205 refactor(services): rename get_location() to get_drive() 2023-05-17 20:27:41 +00:00
Houkime 0ae4192081 test(backups): register dummy service 2023-05-17 20:27:41 +00:00
Houkime ec85f060f8 test(backups): test autobackup timing 2023-05-17 20:27:41 +00:00
Houkime 283c8d09cc refactor(backups): split out storage 2023-05-17 20:27:41 +00:00
Houkime f25e57c51a test(backups): test that we do use cache 2023-05-17 20:27:41 +00:00
Houkime 7699ba0d9b test(backups): test last backup date retrieval 2023-05-17 20:27:41 +00:00
Houkime d4cad61d56 test(backups): test setting autobackup period 2023-05-17 20:27:41 +00:00
Houkime 3c42d8c413 test(backups): test setting services as enabled for autobackups 2023-05-17 20:27:41 +00:00
Houkime ae065867b3 test(backups): test that we do return snapshot on backup 2023-05-17 20:27:41 +00:00
Houkime 772b499b46 feature(backups): huey task to back up 2023-05-17 20:27:41 +00:00
Houkime 144e4e5e91 refactor(backups): make backups stateless 2023-05-17 20:27:41 +00:00
Houkime a2dd47130b feature(backups): repo init tracking 2023-05-17 20:27:41 +00:00
Houkime 4b2cecac8f feature(backups): provider storage and retrieval 2023-05-17 20:27:41 +00:00
Houkime a0afe63b3d refactor(backups): redis model storage utils 2023-05-17 20:27:41 +00:00
Houkime ea6a047478 feature(backups): load from json 2023-05-17 20:27:41 +00:00
Houkime 23ee958bfb feat(backups): sizing up snapshots 2023-05-17 20:27:40 +00:00
Houkime d62d7534d7 test(backups): test restoring a file 2023-05-17 20:27:40 +00:00
Houkime c32353fe9b feat(backups): return proper snapshot structs when listing 2023-05-17 20:27:40 +00:00
Houkime 8a1b3be9fa test(backups): reenable snapshot testing 2023-05-17 20:27:40 +00:00
Houkime 01797cb922 fix(backups): singleton metaclass was screwing with tests 2023-05-17 20:27:40 +00:00
Houkime 06deb83b33 test(backups): localfile repo by default in tests 2023-05-17 20:27:40 +00:00
Houkime e944f4a267 test(backups): basic file backend init test 2023-05-17 20:27:40 +00:00
Houkime 865c8f5280 test(backups): test repo init 2023-05-17 20:27:40 +00:00
Houkime c9fd656181 refactor(backups): snapshotlist and local secret groundwork 2023-05-17 20:27:40 +00:00
Houkime a043392b7b test(backup): no snapshots 2023-05-17 20:27:40 +00:00
Houkime bf263f68b9 test(backup): use a backup service function 2023-05-17 20:27:40 +00:00
Houkime 17df21964a test(backup): try to back up! 2023-05-17 20:27:40 +00:00
Houkime 90c2524800 test(backup): make a testfile to backup 2023-05-17 20:27:40 +00:00
Houkime e54224f15d test(backup): init an in-memory backup class 2023-05-17 20:27:40 +00:00
Houkime 934afeb531 test(backup): dummy service 2023-05-17 20:27:40 +00:00
Houkime af6a49b0a3 test(backup): provider class selection 2023-05-17 20:27:40 +00:00
Inex Code 4e7261c9c4 fix(dns-records): Fix DKIM parser
Previously API relied on client to parse DKIM DNS string, as it was a
separate endpoint. But now client blindly trusts the API, but parser
was not migrated over to the API.
2023-01-16 18:41:54 +03:00
def bcfb8e62e9 refactor(repository): Tokens repository JSON backend (#18)
Co-authored-by: def <dettlaff@riseup.net>
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
Reviewed-on: https://git.selfprivacy.org/SelfPrivacy/selfprivacy-rest-api/pulls/18
Co-authored-by: def <dettlaff@riseup.net>
Co-committed-by: def <dettlaff@riseup.net>
2022-12-30 21:20:17 +03:00
Houkime 67872d7c55 test(tokens-repo): use mnemonic_from_hex consistently 2022-12-26 16:22:16 +00:00
Houkime 450ff41ebd feat(tokens-repo): make device names unique before storage 2022-12-26 15:51:12 +00:00
Houkime 7d9bccf4ec fix(tokens-repo): make is_token_valid infallible 2022-12-26 15:18:02 +00:00
Houkime 5d4ed73435 fix(tokens-repo): properly expire new device keys 2022-12-26 14:01:36 +00:00
Houkime 22a309466e fix(tokens-repo): fix is_name_exists() being fallible 2022-12-21 17:04:18 +00:00
Houkime 20410ec790 fix(tokens-repo): fix name pair validation being able to raise a notfound error 2022-12-21 16:10:41 +00:00
Houkime 3021584adc refactor(tokens-repo): delete refresh_token() from auth 2022-12-21 15:23:42 +00:00
Houkime 39277419ac refactor(tokens-repo): use tokens-repo to refresh tokens 2022-12-21 13:09:51 +00:00
Houkime d3bf867bb5 fix(tokens-repo): do not change the date on token refresh 2022-12-21 13:05:00 +00:00
Houkime a97705ef25 fix(tokens-repository): fix getting and setting recovery token expiration date 2022-12-21 10:24:05 +00:00
Houkime ab70687c61 fix(tokens-repository) :make NONE-uses-left eternally valid and test for it 2022-12-19 12:57:32 +00:00
Houkime 6f6a9f5ef0 test(tokens-repo): do not require order in test_delete_not_found_token 2022-12-16 13:04:56 +00:00
Houkime 95e200bfc5 feat(tokens-repo): reset function 2022-12-16 13:04:19 +00:00
Houkime e504585437 test(tokens-repo): do not require order 2022-12-16 13:03:53 +00:00
Houkime f2fa47466b feat(tokens-repo):empty implementation of redis token repo
But it initializes and fails tests!
2022-12-16 13:03:27 +00:00
Houkime 2797c6f88f fix(tokens-repository): use_mnemonic_new_device_key() now stores a token 2022-12-16 13:03:27 +00:00