Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BUG: posting a bad id to a has_may raises a 500. Should raise a 4xx #1388

Open
3 of 5 tasks
bf4 opened this issue May 9, 2022 · 0 comments
Open
3 of 5 tasks

BUG: posting a bad id to a has_may raises a 500. Should raise a 4xx #1388

bf4 opened this issue May 9, 2022 · 0 comments

Comments

@bf4
Copy link
Collaborator

bf4 commented May 9, 2022

This issue is a (choose one):

  • Problem/bug report.

Checklist before submitting:

  • I've searched for an existing issue.
  • I've asked my question on Gitter and have not received a satisfactory answer.
  • I've included a complete bug report template. This step helps us and allows us to see the bug without trying to reproduce the problem from your description. It helps you because you will frequently detect if it's a problem specific to your project.
  • The feature I'm asking for is compliant with the JSON:API spec.

Description

Running

  • jsonapi-resources 0.9.12 (can't yet upgrade to 0.10 due to how POST to poro resources changed :(
  • rails 6.1.5.1
  • cruby 3.0.3

Given a POST to /v1/tickets/2460688

with body

"relationships": {"file-attachments": {"data": [{"type": "file-attachments", "id": "292356"}] }

for a resource with fields defined as

    has_many :file_attachments, always_include_linkage_data: true

JR raises a 500

ActiveRecord::RecordNotFound
Couldn't find FileAttachment with 'id'=[292356]

but I think it should return a 400

I'm happy to work on a PR or failing test if we can define the behavior and where it should be

stacktrace
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/resource.rb:85:in `block in replace_to_many_links'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/resource.rb:55:in `block in change'",
.bundle/vendor/ruby/3.0.0/gems/activesupport-6.1.5.1/lib/active_support/callbacks.rb:98:in `run_callbacks'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/resource.rb:54:in `change'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/resource.rb:84:in `replace_to_many_links'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/resource.rb:424:in `block in _replace_fields'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/resource.rb:423:in `each'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/resource.rb:423:in `_replace_fields'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/resource.rb:115:in `block in replace_fields'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/resource.rb:61:in `block (2 levels) in change'",
.bundle/vendor/ruby/3.0.0/gems/activesupport-6.1.5.1/lib/active_support/callbacks.rb:98:in `run_callbacks'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/resource.rb:60:in `block in change'",
.bundle/vendor/ruby/3.0.0/gems/activesupport-6.1.5.1/lib/active_support/callbacks.rb:106:in `run_callbacks'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/resource.rb:58:in `change'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/resource.rb:114:in `replace_fields'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/processor.rb:252:in `replace_fields'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/processor.rb:58:in `block (2 levels) in process'",
.bundle/vendor/ruby/3.0.0/gems/activesupport-6.1.5.1/lib/active_support/callbacks.rb:98:in `run_callbacks'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/processor.rb:57:in `block in process'",
.bundle/vendor/ruby/3.0.0/gems/activesupport-6.1.5.1/lib/active_support/callbacks.rb:98:in `run_callbacks'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/processor.rb:56:in `process'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/operation.rb:16:in `process'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/operation_dispatcher.rb:58:in `block in process_operation'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/operation_dispatcher.rb:63:in `with_default_handling'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/operation_dispatcher.rb:57:in `process_operation'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/operation_dispatcher.rb:29:in `block (2 levels) in process'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/operation_dispatcher.rb:28:in `each'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/operation_dispatcher.rb:28:in `block in process'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/operation_dispatcher.rb:43:in `block in transaction'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/acts_as_resource_controller.rb:93:in `block (2 levels) in transaction'",
.bundle/vendor/ruby/3.0.0/gems/activerecord-6.1.5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `block in transaction'",
.bundle/vendor/ruby/3.0.0/gems/activerecord-6.1.5.1/lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction'",
.bundle/vendor/ruby/3.0.0/gems/activesupport-6.1.5.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'",
.bundle/vendor/ruby/3.0.0/gems/activesupport-6.1.5.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'",
.bundle/vendor/ruby/3.0.0/gems/activesupport-6.1.5.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'",
.bundle/vendor/ruby/3.0.0/gems/activesupport-6.1.5.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'",
.bundle/vendor/ruby/3.0.0/gems/activesupport-6.1.5.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'",
.bundle/vendor/ruby/3.0.0/gems/activerecord-6.1.5.1/lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'",
.bundle/vendor/ruby/3.0.0/gems/activerecord-6.1.5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction'",
.bundle/vendor/ruby/3.0.0/gems/activerecord-6.1.5.1/lib/active_record/transactions.rb:209:in `transaction'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/acts_as_resource_controller.rb:92:in `block in transaction'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/operation_dispatcher.rb:42:in `transaction'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/operation_dispatcher.rb:24:in `process'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/acts_as_resource_controller.rb:86:in `block in process_operations'",
.bundle/vendor/ruby/3.0.0/gems/activesupport-6.1.5.1/lib/active_support/callbacks.rb:98:in `run_callbacks'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/acts_as_resource_controller.rb:85:in `process_operations'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/acts_as_resource_controller.rb:77:in `process_request'",
.bundle/vendor/ruby/3.0.0/gems/jsonapi-resources-0.9.12/lib/jsonapi/acts_as_resource_controller.rb:44:in `update'",
.bundle/vendor/ruby/3.0.0/gems/actionpack-6.1.5.1/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'",

Bug reports:

related

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant