summaryrefslogtreecommitdiff
path: root/spec/requests/api/groups_spec.rb
Commit message (Collapse)AuthorAgeFilesLines
* Eliminate N+1 queries in /api/groups/:idStan Hu2019-01-191-0/+14
| | | | | | | | | | | | | | | In https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15475/diffs, a significant amount of work went into eliminating N+1 queries in the /api/groups/:id/projects endpoint. We can reuse the `Entities::Project.prepare_relation` call on the projects. In a group with 2,573 projects on GitLab.com, this change significantly improves performance: * 18019 SQL queries down to 21 * Time spent in DB: 70 s down to 384 ms Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/49845
* Update specs to rails5 formatblackst0ne-convert-specs-rails5-styleblackst0ne2018-12-191-35/+35
| | | | | | | | | | Updates specs to use new rails5 format. The old format: `get :show, { some: params }, { some: headers }` The new format: `get :show, params: { some: params }, headers: { some: headers }`
* Add :nested_groups metadata to tests using subgroupsHeinrich Lee Yu2018-11-191-3/+3
|
* Change param name for consistencyHeinrich Lee Yu2018-11-191-1/+1
|
* Add group projects API options for including shared and subgroupsHeinrich Lee Yu2018-11-191-0/+26
|
* Applies the CE backport of EE#657Tiago Botelho2018-09-241-5/+9
|
* Add min_access_level filter to groups APIMarko, Peter2018-07-231-0/+19
| | | | Signed-off-by: Marko, Peter <peter.marko@siemens.com>
* Resolve "Rename the `Master` role to `Maintainer`" BackendMark Chao2018-07-111-4/+4
|
* Adds with_projects optional parameter to /groups/:id API endpointTiago Botelho2018-07-091-4/+23
|
* Add id as second sort parameter for group sort by nameMarko, Peter2018-06-181-1/+31
| | | | | | | | Adding primary key to database query order rule generates deterministic sort result and thus pagination. This is needed because subgroups can have identical names. Signed-off-by: Marko, Peter <peter.marko@siemens.com>
* Ensure ordering for group sorting testsMarko, Peter2018-06-151-4/+4
| | | | | | | Instead of manually creating list to compare the test result, use system sort to assure no errors are introduced. Signed-off-by: Marko, Peter <peter.marko@siemens.com>
* Add id group api sorting optionMarko, Peter2018-06-121-4/+15
| | | | | | | With introduction of subgroups, many groups may have the same name and/or path, thus further sorting options are necessary. Signed-off-by: Marko, Peter <peter.marko@siemens.com>
* Move API group deletion to SidekiqStan Hu2018-05-181-3/+6
|
* Backport /api/v4/groups N+1 query check from EEsh-backport-groups-api-optimizationStan Hu2018-02-031-0/+15
|
* Replace '.team << [user, role]' with 'add_role(user)' in specs36782-replace-team-user-role-with-add_role-user-in-specsblackst0ne2017-12-221-1/+1
|
* Merge branch 'rs-security-group-api' into 'security-10-2'Douwe Maan2017-12-081-0/+62
| | | | | | | | | [10.2] Ensure we expose group projects using GroupProjectsFinder See merge request gitlab/gitlabhq!2234 (cherry picked from commit 072f8f2fd6ec794645375a16ca4ddc1cbeb76d7a) a2240338 Ensure we expose group projects using GroupProjectsFinder
* Optimize API /groups/:id/projects by preloading associationsStan Hu2017-12-011-0/+14
| | | | Closes #40308
* Add /groups/:id/subgroups endpoint to APIWinnie Hellmann2017-11-091-0/+136
|
* Support custom attributes on groupsMarkus Koller2017-11-061-0/+10
|
* Refactor `have_http_status` into `have_gitlab_http_status` in the specsJacopo2017-10-201-60/+60
|
* Fix the groups API endpoint to handle ?owned=true correctlyNick Thomas2017-09-191-0/+3
|
* Make Members with Owner and Master roles always able to create subgroups30473-allow-creation-of-subgroups-with-gitlab_default_can_create_group-set-to-falseRuben Davila2017-09-071-0/+24
|
* Merge branch '37198-api-doesn-t-respect-default-group-visibility' into 'master'Sean McGivern2017-08-301-0/+1
|\ | | | | | | | | | | | | Respect the default visibility level when creating a group via the API Closes #37198 See merge request !13903
| * Respect the default visibility level when creating a groupRobert Schilling2017-08-291-0/+1
| |
* | Add tests for the unmodified headerRobert Schilling2017-08-281-0/+4
|/
* Fix group and project search for anonymous usersNick Thomas2017-08-241-2/+19
|
* Enable the RSpec/HookArgument cop and auto-correct offensesRobert Speicher2017-08-101-1/+1
|
* Change all `:empty_project` to `:project`rs-empty_project-defaultRobert Speicher2017-08-021-6/+6
|
* Fix the /projects/:id/repository/branches endpoint to handle dots in the ↵Rémy Coutable2017-07-271-1/+1
| | | | | | branch name when the project full patch contains a `/` Signed-off-by: Rémy Coutable <remy@rymai.me>
* Enable Style/DotPosition Rubocop :cop:Grzegorz Bizon2017-06-211-2/+2
|
* Use CTEs for nested groups and authorizationsYorick Peterse2017-05-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit introduces the usage of Common Table Expressions (CTEs) to efficiently retrieve nested group hierarchies, without having to rely on the "routes" table (which is an _incredibly_ inefficient way of getting the data). This requires a patch to ActiveRecord (found in the added initializer) to work properly as ActiveRecord doesn't support WITH statements properly out of the box. Unfortunately MySQL provides no efficient way of getting nested groups. For example, the old routes setup could easily take 5-10 seconds depending on the amount of "routes" in a database. Providing vastly different logic for both MySQL and PostgreSQL will negatively impact the development process. Because of this the various nested groups related methods return empty relations when used in combination with MySQL. For project authorizations the logic is split up into two classes: * Gitlab::ProjectAuthorizations::WithNestedGroups * Gitlab::ProjectAuthorizations::WithoutNestedGroups Both classes get the fresh project authorizations (= as they should be in the "project_authorizations" table), including nested groups if PostgreSQL is used. The logic of these two classes is quite different apart from their public interface. This complicates development a bit, but unfortunately there is no way around this. This commit also introduces Gitlab::GroupHierarchy. This class can be used to get the ancestors and descendants of a base relation, or both by using a UNION. This in turn is used by methods such as: * Namespace#ancestors * Namespace#descendants * User#all_expanded_groups Again this class relies on CTEs and thus only works on PostgreSQL. The Namespace methods will return an empty relation when MySQL is used, while User#all_expanded_groups will return only the groups a user is a direct member of. Performance wise the impact is quite large. For example, on GitLab.com Namespace#descendants used to take around 580 ms to retrieve data for a particular user. Using CTEs we are able to reduce this down to roughly 1 millisecond, returning the exact same data. == On The Fly Refreshing Refreshing of authorizations on the fly (= when users.authorized_projects_populated was not set) is removed with this commit. This simplifies the code, and ensures any queries used for authorizations are not mutated because they are executed in a Rails scope (e.g. Project.visible_to_user). This commit includes a migration to schedule refreshing authorizations for all users, ensuring all of them have their authorizations in place. Said migration schedules users in batches of 5000, with 5 minutes between every batch to smear the load around a bit. == Spec Changes This commit also introduces some changes to various specs. For example, some specs for ProjectTeam assumed that creating a personal project would _not_ lead to the owner having access, which is incorrect. Because we also no longer refresh authorizations on the fly for new users some code had to be added to the "empty_project" factory. This chunk of code ensures that the owner's permissions are refreshed after creating the project, something that is normally done in Projects::CreateService.
* Enable the Style/TrailingCommaInLiteral copRémy Coutable2017-05-101-1/+1
| | | | | | Use the EnforcedStyleForMultiline: no_comma option. Signed-off-by: Rémy Coutable <remy@rymai.me>
* Use relative paths for group/project/user avatarsblackst0ne2017-05-101-1/+1
|
* Unnecessary "include WaitForAjax" and "include ApiHelpers"Jacopo2017-04-211-2/+1
| | | | | Removed all the unnecessary include of `WaitForAjax` and `ApiHelpers` in the specs. Removed unnecessary usage of `api:true`
* Fix all testsToon Claes2017-03-061-3/+2
| | | | | | This commit was about 6 commits before squashing, with the main goal to make all tests green. Now, after pushing this commit we'll see what the CI has to say about that.
* Update entities, rename from builds to jobsZ.J. van de Weg2017-03-061-0/+3
| | | | | This commit only renames the commits, the cascading effects will be dealt with later.
* Expose Group VisibilityLevel as StringToon Claes2017-03-021-3/+3
| | | | | Instead of exposing the VisibilityLevel as Integer, expose it as String `visibility`.
* Return 204 for delete endpointsRobert Schilling2017-02-281-2/+2
|
* Merge branch 'dm-more-namespace-full-path' into 'master' Sean McGivern2017-02-241-1/+1
|\ | | | | | | | | Use Namespace#full_path instead of #path where appropriate See merge request !9495
| * Use Namespace#full_path instead of #path where appropriatedm-more-namespace-full-pathDouwe Maan2017-02-231-1/+1
| |
* | API: Use parameter to get owned groups instead of dedicated endpointRobert Schilling2017-02-241-12/+2
|/
* Revert "Enable Style/DotPosition"Douwe Maan2017-02-231-4/+4
| | | | | | | | | | | | | | | This reverts commit e00fb2bdc2090e9cabeb1eb35a2672a882cc96e9. # Conflicts: # .rubocop.yml # .rubocop_todo.yml # lib/gitlab/ci/config/entry/global.rb # lib/gitlab/ci/config/entry/jobs.rb # spec/lib/gitlab/ci/config/entry/factory_spec.rb # spec/lib/gitlab/ci/config/entry/global_spec.rb # spec/lib/gitlab/ci/config/entry/job_spec.rb # spec/lib/gitlab/ci/status/build/factory_spec.rb # spec/lib/gitlab/incoming_email_spec.rb
* Revert "Prefer leading style for Style/DotPosition"Douwe Maan2017-02-231-6/+6
| | | | This reverts commit cb10b725c8929b8b4460f89c9d96c773af39ba6b.
* Prefer leading style for Style/DotPositionDouwe Maan2017-02-231-6/+6
|
* Enable Style/SpaceInsideBracketsDouwe Maan2017-02-231-3/+3
|
* Enable Style/DotPositionDouwe Maan2017-02-231-4/+4
|
* Add a custom pagination matcherRobert Schilling2017-02-161-0/+17
|
* API: Consolidate /projects endpointToon Claes2017-02-141-0/+20
| | | | | | | | | | | It consolidates these endpoints: - /projects - /projects/owned - /projects/visible - /projects/starred - /projects/all Into the /projects endpoint using query parameters.
* Remove a transient failure from spec/requests/api/groups_spec.rbrs-issue-27974Robert Speicher2017-02-091-3/+5
|
* Add nested groups to the APIdz-nested-groups-apiDmitriy Zaporozhets2017-02-081-0/+14
| | | | Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>