gitlab-org--gitlab-foss/spec/factories
Douwe Maan 12db4cc0e7 Merge branch 'jej-note-search-uses-finder' into 'security'
Fix missing Note access checks in by moving Note#search to updated NoteFinder

Split from !2024 to partially solve https://gitlab.com/gitlab-org/gitlab-ce/issues/23867

## Which fixes are in this MR?

⚠️ - Potentially untested  
💣 - No test coverage  
🚥 - Test coverage of some sort exists (a test failed when error raised)  
🚦 - Test coverage of return value (a test failed when nil used)  
 - Permissions check tested

### Note lookup without access check

- [x]  app/finders/notes_finder.rb:13 :download_code check
- [x]  app/finders/notes_finder.rb:19 `SnippetsFinder`
- [x]  app/models/note.rb:121 [`Issue#visible_to_user`]
- [x]  lib/gitlab/project_search_results.rb:113
  - This is the only use of `app/models/note.rb:121` above, but importantly has no access checks at all. This means it leaks MR comments and snippets when those features are `team-only` in addition to the issue comments which would be fixed by `app/models/note.rb:121`.
  - It is only called from SearchController where `can?(current_user, :download_code, @project)` is checked, so commit comments are not leaked.

### Previous discussions
- [x] https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/2024/diffs#b915c5267a63628b0bafd23d37792ae73ceae272_13_13 `: download_code` check on commit
- [x] https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/2024/diffs#b915c5267a63628b0bafd23d37792ae73ceae272_19_19 `SnippetsFinder` should be used
  - `SnippetsFinder` should check if the snippets feature is enabled -> https://gitlab.com/gitlab-org/gitlab-ce/issues/25223

###  Acceptance criteria met?
- [x] Tests added for new code
- [x] TODO comments removed
- [x] Squashed and removed skipped tests
- [x] Changelog entry
- [ ] State Gitlab versions affected and issue severity in description
- [ ] Create technical debt issue for NotesFinder.
  - Either split into `NotesFinder::ForTarget` and `NotesFinder::Search` or consider object per notable type such as `NotesFinder::OnIssue`. For the first option could create `NotesFinder::Base` which is either inherited from or which can be included in the other two.
  - Avoid case statement anti-pattern in this finder with use of `NotesFinder::OnCommit` etc. Consider something on the finder for this? `Model.finder(user, project)`
  - Move `inc_author` to the controller, and implement `related_notes` to replace `non_diff_notes`/`mr_and_commit_notes`

See merge request !2035
2016-12-15 11:40:12 -03:00
..
ci Add tests for build play extended detailed status 2016-12-12 14:53:05 +01:00
abuse_reports.rb Remove the annotate gem and delete old annotations 2016-05-09 18:00:28 +02:00
appearances.rb Branded login page also in CE 2016-02-26 15:50:51 +01:00
award_emoji.rb Incorportate feedback 2016-06-01 12:10:08 +02:00
boards.rb Update Boards::CreateService to handle with the has_many association 2016-10-11 11:39:04 -03:00
broadcast_messages.rb TST: Use more accurate time windows so tests do not fail 2016-08-04 14:50:39 -04:00
chat_names.rb Add most of specs for chat names 2016-11-16 14:56:30 +01:00
commit_statuses.rb Add a lot of tests for scopes, feedback: 2016-11-19 01:02:49 +08:00
commits.rb Refactor and expose only Gitlab::UrlBuilder.build(record) 2016-04-13 16:07:04 +02:00
deploy_keys_projects.rb Move all factory definitions to their own file 2016-03-04 15:26:51 -05:00
deployments.rb Add environment factory review app trait 2016-11-09 09:42:09 +01:00
emails.rb Remove unused another_email factory 2016-03-06 16:34:43 -05:00
environments.rb Make it possible to fabricate environment on branch 2016-11-14 14:10:54 +01:00
events.rb Fix broken spec due to last_activity_at updates being throttled 2016-09-19 22:59:15 -07:00
file_uploader.rb Extend specs for GFM uploads rewriter 2016-03-31 09:43:47 +02:00
forked_project_links.rb Remove the annotate gem and delete old annotations 2016-05-09 18:00:28 +02:00
group_members.rb Refactor group_members_controller_spec 2016-10-19 14:13:44 +03:00
groups.rb Create nested group factory 2016-12-11 10:30:40 +02:00
identities.rb Move all factory definitions to their own file 2016-03-04 15:26:51 -05:00
issues.rb Ensure specs on sorting of issues in API are deterministic on MySQL 2016-09-12 15:44:41 +02:00
keys.rb Move all factory definitions to their own file 2016-03-04 15:26:51 -05:00
label_links.rb Remove the annotate gem and delete old annotations 2016-05-09 18:00:28 +02:00
label_priorities.rb Add LabelPriority model 2016-10-19 14:58:27 -02:00
labels.rb Fix sorting by label priorities 2016-10-19 14:58:27 -02:00
lfs_objects.rb Remove the annotate gem and delete old annotations 2016-05-09 18:00:28 +02:00
lfs_objects_projects.rb Remove the annotate gem and delete old annotations 2016-05-09 18:00:28 +02:00
lists.rb Remove label_list factory 2016-08-17 12:58:58 -03:00
merge_requests.rb Add setting to only allow merge requests to be merged when all discussions are resolved 2016-11-04 14:58:40 +01:00
milestones.rb Updated milestone count helper plus tests 2016-09-07 15:27:14 -05:00
namespaces.rb Move all factory definitions to their own file 2016-03-04 15:26:51 -05:00
notes.rb Merge branch 'jej-note-search-uses-finder' into 'security' 2016-12-15 11:40:12 -03:00
notification_settings.rb Exclude projects pending delete from notifications 2016-07-07 20:49:17 +01:00
oauth_access_tokens.rb Remove the annotate gem and delete old annotations 2016-05-09 18:00:28 +02:00
oauth_applications.rb Add spec for deletion of authorized OAuth2 application 2016-04-14 07:24:58 -07:00
personal_access_tokens.rb Allow expiration of personal access tokens. 2016-04-28 22:28:36 +05:30
personal_snippets.rb Simplify the various Snippet factories 2016-03-08 16:40:27 -05:00
project_group_links.rb Bring ProjectGroupLink model and migrations from EE 2016-03-11 17:47:05 +01:00
project_hooks.rb api: expose wiki_page_events project hook field in the API 2016-08-24 10:33:51 -04:00
project_members.rb Refactor project_members_controller_spec 2016-10-19 15:13:59 +03:00
project_snippets.rb Simplify the various Snippet factories 2016-03-08 16:40:27 -05:00
project_wikis.rb Fix wiki tests 2016-04-20 08:25:41 +08:00
projects.rb Introduce deployment services, starting with a KubernetesService 2016-12-14 21:06:26 +00:00
protected_branches.rb Fix failing tests relating to backporting ee!581. 2016-08-16 13:42:34 +05:30
releases.rb Remove the annotate gem and delete old annotations 2016-05-09 18:00:28 +02:00
sent_notifications.rb Move all factory definitions to their own file 2016-03-04 15:26:51 -05:00
service_hooks.rb Move all factory definitions to their own file 2016-03-04 15:26:51 -05:00
services.rb Remove unnecessary attribute definitions from Service factory 2016-03-06 16:55:17 -05:00
snippets.rb Simplify the various Snippet factories 2016-03-08 16:40:27 -05:00
spam_logs.rb Move all factory definitions to their own file 2016-03-04 15:26:51 -05:00
subscriptions.rb Add unique index to subscriptions on subscribable and user and project 2016-11-17 15:10:12 -02:00
system_hooks.rb Move all factory definitions to their own file 2016-03-04 15:26:51 -05:00
todos.rb Add approval required todos 2016-07-12 19:01:09 +01:00
u2f_registrations.rb Add a U2fRegistrations table/model. 2016-06-06 12:50:31 +05:30
user_agent_details.rb Further refactor and syntax fixes. 2016-08-15 17:20:57 -05:00
users.rb Add a U2fRegistrations table/model. 2016-06-06 12:50:31 +05:30
wiki_pages.rb Implement the correct linking behaviour in WikiLinkFilter. 2016-06-09 10:04:15 +05:30