2019-07-18 07:07:10 +08:00
# frozen_string_literal: true
describe BackupRestore :: Backuper do
it 'returns a non-empty parameterized title when site title contains unicode' do
SiteSetting . title = 'Ɣ'
2019-07-19 05:49:16 +08:00
backuper = BackupRestore :: Backuper . new ( Discourse . system_user . id )
2019-07-18 07:07:10 +08:00
expect ( backuper . send ( :get_parameterized_title ) ) . to eq ( " discourse " )
end
it 'returns a valid parameterized site title' do
SiteSetting . title = " Coding Horror "
2019-07-19 05:49:16 +08:00
backuper = BackupRestore :: Backuper . new ( Discourse . system_user . id )
2019-07-18 07:07:10 +08:00
expect ( backuper . send ( :get_parameterized_title ) ) . to eq ( " coding-horror " )
end
2021-08-04 01:06:50 +08:00
describe '#notify_user' do
before do
freeze_time Time . zone . parse ( '2010-01-01 12:00' )
end
it 'includes logs if short' do
SiteSetting . max_export_file_size_kb = 1
SiteSetting . export_authorized_extensions = " tar.gz "
silence_stdout do
backuper = BackupRestore :: Backuper . new ( Discourse . system_user . id )
expect { backuper . send ( :notify_user ) }
. to change { Topic . private_messages . count } . by ( 1 )
. and change { Upload . count } . by ( 0 )
end
expect ( Topic . last . first_post . raw ) . to include ( " ```text \n [2010-01-01 12:00:00] Notifying 'system' of the end of the backup... \n ``` " )
end
it 'include upload if log is long' do
SiteSetting . max_post_length = 250
silence_stdout do
2022-01-10 03:26:52 +08:00
backuper = BackupRestore :: Backuper . new ( Discourse . system_user . id )
2021-08-04 01:06:50 +08:00
expect { backuper . send ( :notify_user ) }
. to change { Topic . private_messages . count } . by ( 1 )
. and change { Upload . where ( original_filename : " log.txt.zip " ) . count } . by ( 1 )
end
expect ( Topic . last . first_post . raw ) . to include ( " [log.txt.zip|attachment] " )
end
it 'includes trimmed logs if log is long and upload cannot be saved' do
SiteSetting . max_post_length = 348
SiteSetting . max_export_file_size_kb = 1
SiteSetting . export_authorized_extensions = " tar.gz "
silence_stdout do
backuper = BackupRestore :: Backuper . new ( Discourse . system_user . id )
1 . upto ( 10 ) . each do | i |
backuper . send ( :log , " Line #{ i } " )
end
expect { backuper . send ( :notify_user ) }
. to change { Topic . private_messages . count } . by ( 1 )
. and change { Upload . count } . by ( 0 )
end
expect ( Topic . last . first_post . raw ) . to include ( " ```text \n ... \n [2010-01-01 12:00:00] Line 10 \n [2010-01-01 12:00:00] Notifying 'system' of the end of the backup... \n ``` " )
end
end
2019-07-18 07:07:10 +08:00
end