Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
19d81601
Commit
19d81601
authored
Mar 11, 2022
by
Manoj M J
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix some specs
Fix some specs
parent
a904113c
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
41 additions
and
5 deletions
+41
-5
app/models/project.rb
app/models/project.rb
+12
-1
spec/features/projects/members/user_requests_access_spec.rb
spec/features/projects/members/user_requests_access_spec.rb
+4
-2
spec/models/project_spec.rb
spec/models/project_spec.rb
+21
-0
spec/requests/api/projects_spec.rb
spec/requests/api/projects_spec.rb
+4
-2
No files found.
app/models/project.rb
View file @
19d81601
...
...
@@ -2519,7 +2519,18 @@ class Project < ApplicationRecord
end
def
access_request_approvers_to_be_notified
members
.
maintainers
.
connected_to_user
.
order_recent_sign_in
.
limit
(
Member
::
ACCESS_REQUEST_APPROVERS_TO_BE_NOTIFIED_LIMIT
)
# For a personal project:
# The creator is added as a member with `Owner` access level, starting from GitLab 14.8
# The creator was added as a member with `Maintainer` access level, before GitLab 14.8
# So, to make sure access requests for all personal projects work as expected,
# we need to filter members with the scope `owners_and_maintainers`.
access_request_approvers
=
if
personal?
members
.
owners_and_maintainers
else
members
.
maintainers
end
access_request_approvers
.
connected_to_user
.
order_recent_sign_in
.
limit
(
Member
::
ACCESS_REQUEST_APPROVERS_TO_BE_NOTIFIED_LIMIT
)
end
def
pages_lookup_path
(
trim_prefix:
nil
,
domain:
nil
)
...
...
spec/features/projects/members/user_requests_access_spec.rb
View file @
19d81601
...
...
@@ -4,12 +4,14 @@ require 'spec_helper'
RSpec
.
describe
'Projects > Members > User requests access'
,
:js
do
let_it_be
(
:user
)
{
create
(
:user
)
}
let_it_be
(
:maintainer
)
{
create
(
:user
)
}
let_it_be
(
:project
)
{
create
(
:project
,
:public
,
:repository
)
}
let
(
:
maintai
ner
)
{
project
.
first_owner
}
let
(
:
ow
ner
)
{
project
.
first_owner
}
before
do
sign_in
(
user
)
project
.
add_maintainer
(
maintainer
)
visit
project_path
(
project
)
stub_feature_flags
(
bootstrap_confirmation_modals:
false
)
end
...
...
@@ -24,7 +26,7 @@ RSpec.describe 'Projects > Members > User requests access', :js do
it
'user can request access to a project'
do
perform_enqueued_jobs
{
click_link
'Request Access'
}
expect
(
ActionMailer
::
Base
.
deliveries
.
last
.
to
).
to
eq
[
maintainer
.
notification_email_or_default
]
expect
(
ActionMailer
::
Base
.
deliveries
.
map
(
&
:to
)).
to
match_array
([[
owner
.
notification_email_or_default
],
[
maintainer
.
notification_email_or_default
]])
expect
(
ActionMailer
::
Base
.
deliveries
.
last
.
subject
).
to
eq
"Request to join the
#{
project
.
full_name
}
project"
expect
(
project
.
requesters
.
exists?
(
user_id:
user
)).
to
be_truthy
...
...
spec/models/project_spec.rb
View file @
19d81601
...
...
@@ -6724,6 +6724,27 @@ RSpec.describe Project, factory_default: :keep do
end
describe
'#access_request_approvers_to_be_notified'
do
context
'for a personal project'
do
let_it_be
(
:project
)
{
create
(
:project
)
}
let_it_be
(
:maintainer
)
{
create
(
:user
)
}
before
do
project
.
add_maintainer
(
maintainer
)
end
it
'includes the owner of the personal project'
do
project_owner_membership
=
project
.
members
.
owners
.
find_by
(
user_id:
project
.
namespace
.
owner_id
)
expect
(
project
.
access_request_approvers_to_be_notified
).
to
include
(
project_owner_membership
)
end
it
'includes the maintainers of the personal project, if any'
do
project_maintainer_membership
=
project
.
members
.
maintainers
.
find_by
(
user_id:
maintainer
.
id
)
expect
(
project
.
access_request_approvers_to_be_notified
).
to
include
(
project_maintainer_membership
)
end
end
let_it_be
(
:project
)
{
create
(
:project
,
group:
create
(
:group
,
:public
))
}
it
'returns a maximum of ten maintainers of the project in recent_sign_in descending order'
do
...
...
spec/requests/api/projects_spec.rb
View file @
19d81601
...
...
@@ -2546,9 +2546,11 @@ RSpec.describe API::Projects do
get
api
(
"/projects"
,
user
)
expect
(
response
).
to
have_gitlab_http_status
(
:ok
)
expect
(
json_response
.
first
[
'permissions'
][
'project_access'
][
'access_level'
])
detail_of_project
=
json_response
.
find
{
|
detail
|
detail
[
'id'
]
==
project
.
id
}
expect
(
detail_of_project
.
dig
(
'permissions'
,
'project_access'
,
'access_level'
))
.
to
eq
(
Gitlab
::
Access
::
MAINTAINER
)
expect
(
json_response
.
first
[
'permissions'
][
'group_access'
]
).
to
be_nil
expect
(
detail_of_project
.
dig
(
'permissions'
,
'group_access'
)
).
to
be_nil
end
end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment