mirror of
https://github.com/we-promise/sure.git
synced 2026-09-02 13:21:17 +00:00
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>
81 lines
2.5 KiB
Ruby
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
|