Files
sure/test/controllers/import/uploads_controller_test.rb
T
GFRandGerald 07ce130405 fix: respect SURE_IMPORT_MAX_NDJSON_SIZE_MB in Sure import GUI upload (#3111)
The GUI upload paths (imports_controller#create_sure_import and
Import::UploadsController#update_sure_import_upload) checked file
size against the hardcoded SureImport::MAX_NDJSON_SIZE constant
instead of SureImport.max_ndjson_size, so self-hosted admins raising
SURE_IMPORT_MAX_NDJSON_SIZE_MB had no effect on the GUI — only the
API upload paths honored it. Removes the now-unused constant.

Fixes #3010.

Co-authored-by: Gerald <248542187+gfr-free@users.noreply.github.com>
2026-08-22 04:33:54 +02:00

81 lines
2.5 KiB
Ruby

require "test_helper"
class Import::UploadsControllerTest < ActionDispatch::IntegrationTest
setup do
sign_in @user = users(:family_admin)
@import = imports(:transaction)
end
test "show" do
get import_upload_url(@import)
assert_response :success
end
test "uploads valid csv by copy and pasting" do
patch import_upload_url(@import), params: {
import: {
raw_file_str: file_fixture("imports/valid.csv").read,
col_sep: ","
}
}
assert_redirected_to import_configuration_url(@import, template_hint: true)
assert_equal "CSV uploaded successfully.", flash[:notice]
end
test "uploads valid csv by file" do
patch import_upload_url(@import), params: {
import: {
import_file: file_fixture_upload("imports/valid.csv"),
col_sep: ","
}
}
assert_redirected_to import_configuration_url(@import, template_hint: true)
assert_equal "CSV uploaded successfully.", flash[:notice]
end
test "account select does not leak unshared family accounts (#1803)" do
sign_in users(:family_member)
get import_upload_url(@import)
assert_response :success
assert_select 'select[name="import[account_id]"] option', text: "Checking Account"
assert_select 'select[name="import[account_id]"] option', text: "Collectable Account", count: 0
assert_select 'select[name="import[account_id]"] option', text: "IOU (personal debt to friend)", count: 0
assert_select 'select[name="import[account_id]"] option', text: "Plaid Depository Account", count: 0
end
test "respects SURE_IMPORT_MAX_NDJSON_SIZE_MB when uploading Sure import file (#3010)" do
configured_limit = 2.megabytes
SureImport.stubs(:max_ndjson_size).returns(configured_limit)
sure_import = imports(:sure)
oversized_file = Rack::Test::UploadedFile.new(
StringIO.new("x" * (configured_limit + 1)),
"application/x-ndjson",
original_filename: "all.ndjson"
)
patch import_upload_url(sure_import), params: {
import: { ndjson_file: oversized_file }
}
assert_response :unprocessable_entity
assert_equal I18n.t("imports.create.file_too_large", max_size: configured_limit / 1.megabyte), flash[:alert]
end
test "invalid csv cannot be uploaded" do
patch import_upload_url(@import), params: {
import: {
import_file: file_fixture_upload("imports/invalid.csv"),
col_sep: ","
}
}
assert_response :unprocessable_entity
assert_equal "Must be valid CSV with headers and at least one row of data", flash[:alert]
end
end