Skip to content
Snippets Groups Projects
Verified Commit df974814 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

Add nested groups to the API

parent 99fceff4
No related branches found
No related tags found
No related merge requests found
---
title: Add nested groups to the API
merge_request: 9034
author:
Loading
Loading
@@ -32,7 +32,8 @@ GET /groups
"web_url": "http://localhost:3000/groups/foo-bar",
"request_access_enabled": false,
"full_name": "Foobar Group",
"full_path": "foo-bar"
"full_path": "foo-bar",
"parent_id": null
}
]
```
Loading
Loading
@@ -156,8 +157,9 @@ Example response:
"avatar_url": null,
"web_url": "https://gitlab.example.com/groups/twitter",
"request_access_enabled": false,
"full_name": "Foobar Group",
"full_path": "foo-bar",
"full_name": "Twitter",
"full_path": "twitter",
"parent_id": null,
"projects": [
{
"id": 7,
Loading
Loading
@@ -332,6 +334,7 @@ Parameters:
- `visibility_level` (optional) - The group's visibility. 0 for private, 10 for internal, 20 for public.
- `lfs_enabled` (optional) - Enable/disable Large File Storage (LFS) for the projects in this group
- `request_access_enabled` (optional) - Allow users to request member access.
- `parent_id` (optional) - The parent group id for creating nested group.
 
## Transfer project to group
 
Loading
Loading
@@ -383,6 +386,7 @@ Example response:
"request_access_enabled": false,
"full_name": "Foobar Group",
"full_path": "foo-bar",
"parent_id": null,
"projects": [
{
"id": 9,
Loading
Loading
Loading
Loading
@@ -138,6 +138,7 @@ module API
expose :web_url
expose :request_access_enabled
expose :full_name, :full_path
expose :parent_id
 
expose :statistics, if: :statistics do
with_options format_with: -> (value) { value.to_i } do
Loading
Loading
Loading
Loading
@@ -73,6 +73,7 @@ module API
params do
requires :name, type: String, desc: 'The name of the group'
requires :path, type: String, desc: 'The path of the group'
optional :parent_id, type: Integer, desc: 'The parent group id for creating nested group'
use :optional_params
end
post do
Loading
Loading
Loading
Loading
@@ -179,6 +179,7 @@ describe API::Groups, api: true do
expect(json_response['request_access_enabled']).to eq(group1.request_access_enabled)
expect(json_response['full_name']).to eq(group1.full_name)
expect(json_response['full_path']).to eq(group1.full_path)
expect(json_response['parent_id']).to eq(group1.parent_id)
expect(json_response['projects']).to be_an Array
expect(json_response['projects'].length).to eq(2)
expect(json_response['shared_projects']).to be_an Array
Loading
Loading
@@ -398,6 +399,19 @@ describe API::Groups, api: true do
expect(json_response["request_access_enabled"]).to eq(group[:request_access_enabled])
end
 
it "creates a nested group" do
parent = create(:group)
parent.add_owner(user3)
group = attributes_for(:group, { parent_id: parent.id })
post api("/groups", user3), group
expect(response).to have_http_status(201)
expect(json_response["full_path"]).to eq("#{parent.path}/#{group[:path]}")
expect(json_response["parent_id"]).to eq(parent.id)
end
it "does not create group, duplicate" do
post api("/groups", user3), { name: 'Duplicate Test', path: group2.path }
 
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment