Skip to content
Snippets Groups Projects
Commit 93d849be authored by Felipe Artur's avatar Felipe Artur
Browse files

Expose project share expiration_date field on API

parent 00a7ca74
No related branches found
No related tags found
No related merge requests found
Please view this file on the master branch, on stable branches it's out of date.
v 8.13.0 (unreleased)
- Expose expires_at field when sharing project on API
 
v 8.12.0 (unreleased)
- Update the rouge gem to 2.0.6, which adds highlighting support for JSX, Prometheus, and others. !6251
Loading
Loading
Loading
Loading
@@ -899,6 +899,7 @@ Parameters:
- `id` (required) - The ID or NAMESPACE/PROJECT_NAME of the project to be forked
- `group_id` (required) - The ID of a group
- `group_access` (required) - Level of permissions for sharing
- `expires_at` - Share expiration date in ISO 8601 format: 2016-09-26
 
## Hooks
 
Loading
Loading
Loading
Loading
@@ -343,7 +343,7 @@ module API
end
 
class ProjectGroupLink < Grape::Entity
expose :id, :project_id, :group_id, :group_access
expose :id, :project_id, :group_id, :group_access, :expires_at
end
 
class Todo < Grape::Entity
Loading
Loading
Loading
Loading
@@ -393,23 +393,24 @@ module API
# Share project with group
#
# Parameters:
# id (required) - The ID of a project
# group_id (required) - The ID of a group
# id (required) - The ID of a project
# group_id (required) - The ID of a group
# group_access (required) - Level of permissions for sharing
# expires_at (optional) - Share expiration date
#
# Example Request:
# POST /projects/:id/share
post ":id/share" do
authorize! :admin_project, user_project
required_attributes! [:group_id, :group_access]
attrs = attributes_for_keys [:group_id, :group_access, :expires_at]
 
unless user_project.allowed_to_share_with_group?
return render_api_error!("The project sharing with group is disabled", 400)
end
 
link = user_project.project_group_links.new
link.group_id = params[:group_id]
link.group_access = params[:group_access]
link = user_project.project_group_links.new(attrs)
if link.save
present link, with: Entities::ProjectGroupLink
else
Loading
Loading
Loading
Loading
@@ -761,13 +761,16 @@ describe API::API, api: true do
let(:group) { create(:group) }
 
it "shares project with group" do
expires_at = 10.days.from_now.to_date
expect do
post api("/projects/#{project.id}/share", user), group_id: group.id, group_access: Gitlab::Access::DEVELOPER
post api("/projects/#{project.id}/share", user), group_id: group.id, group_access: Gitlab::Access::DEVELOPER, expires_at: expires_at
end.to change { ProjectGroupLink.count }.by(1)
 
expect(response.status).to eq 201
expect(json_response['group_id']).to eq group.id
expect(json_response['group_access']).to eq Gitlab::Access::DEVELOPER
expect(json_response['group_id']).to eq(group.id)
expect(json_response['group_access']).to eq(Gitlab::Access::DEVELOPER)
expect(json_response['expires_at']).to eq(expires_at.to_s)
end
 
it "returns a 400 error when group id is not given" do
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