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
2930cf7c
Commit
2930cf7c
authored
Jan 10, 2022
by
Siddharth Asthana
Committed by
Markus Koller
Jan 10, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactor all the specs to use `:integration` rather than `:service`
Changelog: other
parent
96110427
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
192 additions
and
194 deletions
+192
-194
ee/spec/models/ee/integration_spec.rb
ee/spec/models/ee/integration_spec.rb
+4
-4
spec/factories/integrations.rb
spec/factories/integrations.rb
+1
-1
spec/factories/usage_data.rb
spec/factories/usage_data.rb
+10
-10
spec/features/merge_request/user_sees_merge_widget_spec.rb
spec/features/merge_request/user_sees_merge_widget_spec.rb
+1
-1
spec/features/profiles/chat_names_spec.rb
spec/features/profiles/chat_names_spec.rb
+1
-1
spec/graphql/types/projects/service_type_spec.rb
spec/graphql/types/projects/service_type_spec.rb
+1
-1
spec/helpers/auto_devops_helper_spec.rb
spec/helpers/auto_devops_helper_spec.rb
+1
-1
spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb
spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb
+1
-1
spec/lib/gitlab/import_export/project/relation_factory_spec.rb
...lib/gitlab/import_export/project/relation_factory_spec.rb
+1
-1
spec/lib/gitlab/integrations/sti_type_spec.rb
spec/lib/gitlab/integrations/sti_type_spec.rb
+5
-7
spec/models/integration_spec.rb
spec/models/integration_spec.rb
+138
-138
spec/models/project_spec.rb
spec/models/project_spec.rb
+21
-21
spec/services/chat_names/authorize_user_service_spec.rb
spec/services/chat_names/authorize_user_service_spec.rb
+3
-3
spec/services/chat_names/find_user_service_spec.rb
spec/services/chat_names/find_user_service_spec.rb
+1
-1
spec/support/import_export/export_file_helper.rb
spec/support/import_export/export_file_helper.rb
+1
-1
spec/workers/deployments/hooks_worker_spec.rb
spec/workers/deployments/hooks_worker_spec.rb
+2
-2
No files found.
ee/spec/models/ee/integration_spec.rb
View file @
2930cf7c
...
...
@@ -32,14 +32,14 @@ RSpec.describe Integration do
end
describe
'.vulnerability_hooks'
do
it
'includes
service
s where vulnerability_events is true'
do
create
(
:
service
,
active:
true
,
vulnerability_events:
true
)
it
'includes
integration
s where vulnerability_events is true'
do
create
(
:
integration
,
active:
true
,
vulnerability_events:
true
)
expect
(
described_class
.
vulnerability_hooks
.
count
).
to
eq
1
end
it
'excludes
service
s where vulnerability_events is false'
do
create
(
:
service
,
active:
true
,
vulnerability_events:
false
)
it
'excludes
integration
s where vulnerability_events is false'
do
create
(
:
integration
,
active:
true
,
vulnerability_events:
false
)
expect
(
described_class
.
vulnerability_hooks
.
count
).
to
eq
0
end
...
...
spec/factories/integrations.rb
View file @
2930cf7c
# frozen_string_literal: true
FactoryBot
.
define
do
factory
:integration
,
aliases:
[
:service
]
do
factory
:integration
do
project
type
{
'Integration'
}
end
...
...
spec/factories/usage_data.rb
View file @
2930cf7c
...
...
@@ -19,16 +19,16 @@ FactoryBot.define do
create
(
:jira_import_state
,
:finished
,
project:
projects
[
1
],
label:
jira_label
,
imported_issues_count:
3
)
create
(
:jira_import_state
,
:scheduled
,
project:
projects
[
1
],
label:
jira_label
)
create
(
:prometheus_integration
,
project:
projects
[
1
])
create
(
:
service
,
project:
projects
[
1
],
type:
'JenkinsService'
,
active:
true
)
create
(
:
service
,
project:
projects
[
0
],
type:
'SlackSlashCommandsService'
,
active:
true
)
create
(
:
service
,
project:
projects
[
1
],
type:
'SlackService'
,
active:
true
)
create
(
:
service
,
project:
projects
[
2
],
type:
'SlackService'
,
active:
true
)
create
(
:
service
,
project:
projects
[
2
],
type:
'MattermostService'
,
active:
false
)
create
(
:
service
,
group:
group
,
project:
nil
,
type:
'MattermostService'
,
active:
true
)
mattermost_instance
=
create
(
:
service
,
:instance
,
type:
'MattermostService'
,
active:
true
)
create
(
:
service
,
project:
projects
[
1
],
type:
'MattermostService'
,
active:
true
,
inherit_from_id:
mattermost_instance
.
id
)
create
(
:
service
,
group:
group
,
project:
nil
,
type:
'SlackService'
,
active:
true
,
inherit_from_id:
mattermost_instance
.
id
)
create
(
:
service
,
project:
projects
[
2
],
type:
'CustomIssueTrackerService'
,
active:
true
)
create
(
:
integration
,
project:
projects
[
1
],
type:
'JenkinsService'
,
active:
true
)
create
(
:
integration
,
project:
projects
[
0
],
type:
'SlackSlashCommandsService'
,
active:
true
)
create
(
:
integration
,
project:
projects
[
1
],
type:
'SlackService'
,
active:
true
)
create
(
:
integration
,
project:
projects
[
2
],
type:
'SlackService'
,
active:
true
)
create
(
:
integration
,
project:
projects
[
2
],
type:
'MattermostService'
,
active:
false
)
create
(
:
integration
,
group:
group
,
project:
nil
,
type:
'MattermostService'
,
active:
true
)
mattermost_instance
=
create
(
:
integration
,
:instance
,
type:
'MattermostService'
,
active:
true
)
create
(
:
integration
,
project:
projects
[
1
],
type:
'MattermostService'
,
active:
true
,
inherit_from_id:
mattermost_instance
.
id
)
create
(
:
integration
,
group:
group
,
project:
nil
,
type:
'SlackService'
,
active:
true
,
inherit_from_id:
mattermost_instance
.
id
)
create
(
:
integration
,
project:
projects
[
2
],
type:
'CustomIssueTrackerService'
,
active:
true
)
create
(
:project_error_tracking_setting
,
project:
projects
[
0
])
create
(
:project_error_tracking_setting
,
project:
projects
[
1
],
enabled:
false
)
alert_bot_issues
=
create_list
(
:incident
,
2
,
project:
projects
[
0
],
author:
User
.
alert_bot
)
...
...
spec/features/merge_request/user_sees_merge_widget_spec.rb
View file @
2930cf7c
...
...
@@ -96,7 +96,7 @@ RSpec.describe 'Merge request > User sees merge widget', :js do
context
'view merge request with external CI service'
do
before
do
create
(
:
service
,
project:
project
,
create
(
:
integration
,
project:
project
,
active:
true
,
type:
'DroneCiService'
,
category:
'ci'
)
...
...
spec/features/profiles/chat_names_spec.rb
View file @
2930cf7c
...
...
@@ -4,7 +4,7 @@ require 'spec_helper'
RSpec
.
describe
'Profile > Chat'
do
let
(
:user
)
{
create
(
:user
)
}
let
(
:integration
)
{
create
(
:
service
)
}
let
(
:integration
)
{
create
(
:
integration
)
}
before
do
sign_in
(
user
)
...
...
spec/graphql/types/projects/service_type_spec.rb
View file @
2930cf7c
...
...
@@ -8,7 +8,7 @@ RSpec.describe Types::Projects::ServiceType do
describe
".resolve_type"
do
it
'resolves the corresponding type for objects'
do
expect
(
described_class
.
resolve_type
(
build
(
:jira_integration
),
{})).
to
eq
(
Types
::
Projects
::
Services
::
JiraServiceType
)
expect
(
described_class
.
resolve_type
(
build
(
:
service
),
{})).
to
eq
(
Types
::
Projects
::
Services
::
BaseServiceType
)
expect
(
described_class
.
resolve_type
(
build
(
:
integration
),
{})).
to
eq
(
Types
::
Projects
::
Services
::
BaseServiceType
)
expect
(
described_class
.
resolve_type
(
build
(
:drone_ci_integration
),
{})).
to
eq
(
Types
::
Projects
::
Services
::
BaseServiceType
)
expect
(
described_class
.
resolve_type
(
build
(
:custom_issue_tracker_integration
),
{})).
to
eq
(
Types
::
Projects
::
Services
::
BaseServiceType
)
end
...
...
spec/helpers/auto_devops_helper_spec.rb
View file @
2930cf7c
...
...
@@ -86,7 +86,7 @@ RSpec.describe AutoDevopsHelper do
context
'when another service is enabled'
do
before
do
create
(
:
service
,
project:
project
,
category: :ci
,
active:
true
)
create
(
:
integration
,
project:
project
,
category: :ci
,
active:
true
)
end
it
{
is_expected
.
to
eq
(
false
)
}
...
...
spec/lib/gitlab/import_export/fast_hash_serializer_spec.rb
View file @
2930cf7c
...
...
@@ -258,7 +258,7 @@ RSpec.describe Gitlab::ImportExport::FastHashSerializer do
create
(
:resource_label_event
,
label:
group_label
,
merge_request:
merge_request
)
create
(
:event
,
:created
,
target:
milestone
,
project:
project
,
author:
user
)
create
(
:
service
,
project:
project
,
type:
'CustomIssueTrackerService'
,
category:
'issue_tracker'
,
properties:
{
one:
'value'
})
create
(
:
integration
,
project:
project
,
type:
'CustomIssueTrackerService'
,
category:
'issue_tracker'
,
properties:
{
one:
'value'
})
create
(
:project_custom_attribute
,
project:
project
)
create
(
:project_custom_attribute
,
project:
project
)
...
...
spec/lib/gitlab/import_export/project/relation_factory_spec.rb
View file @
2930cf7c
...
...
@@ -88,7 +88,7 @@ RSpec.describe Gitlab::ImportExport::Project::RelationFactory, :use_clean_rails_
end
context
'original service exists'
do
let
(
:service_id
)
{
create
(
:
service
,
project:
project
).
id
}
let
(
:service_id
)
{
create
(
:
integration
,
project:
project
).
id
}
it
'does not have the original service_id'
do
expect
(
created_object
.
service_id
).
not_to
eq
(
service_id
)
...
...
spec/lib/gitlab/integrations/sti_type_spec.rb
View file @
2930cf7c
...
...
@@ -46,11 +46,11 @@ RSpec.describe Gitlab::Integrations::StiType do
SQL
end
let_it_be
(
:
service
)
{
create
(
:service
)
}
let_it_be
(
:
integration
)
{
create
(
:integration
)
}
it
'forms SQL UPDATE statements correctly'
do
sql_statements
=
types
.
map
do
|
type
|
record
=
ActiveRecord
::
QueryRecorder
.
new
{
service
.
update_column
(
:type
,
type
)
}
record
=
ActiveRecord
::
QueryRecorder
.
new
{
integration
.
update_column
(
:type
,
type
)
}
record
.
log
.
first
end
...
...
@@ -65,8 +65,6 @@ RSpec.describe Gitlab::Integrations::StiType do
SQL
end
let
(
:service
)
{
create
(
:service
)
}
it
'forms SQL DELETE statements correctly'
do
sql_statements
=
types
.
map
do
|
type
|
record
=
ActiveRecord
::
QueryRecorder
.
new
{
Integration
.
delete_by
(
type:
type
)
}
...
...
@@ -81,7 +79,7 @@ RSpec.describe Gitlab::Integrations::StiType do
describe
'#deserialize'
do
specify
'it deserializes type correctly'
,
:aggregate_failures
do
types
.
each
do
|
type
|
service
=
create
(
:
service
,
type:
type
)
service
=
create
(
:
integration
,
type:
type
)
expect
(
service
.
type
).
to
eq
(
'AsanaService'
)
end
...
...
@@ -90,7 +88,7 @@ RSpec.describe Gitlab::Integrations::StiType do
describe
'#cast'
do
it
'casts type as model correctly'
,
:aggregate_failures
do
create
(
:
service
,
type:
'AsanaService'
)
create
(
:
integration
,
type:
'AsanaService'
)
types
.
each
do
|
type
|
expect
(
Integration
.
find_by
(
type:
type
)).
to
be_kind_of
(
Integrations
::
Asana
)
...
...
@@ -100,7 +98,7 @@ RSpec.describe Gitlab::Integrations::StiType do
describe
'#changed?'
do
it
'detects changes correctly'
,
:aggregate_failures
do
service
=
create
(
:
service
,
type:
'AsanaService'
)
service
=
create
(
:
integration
,
type:
'AsanaService'
)
types
.
each
do
|
type
|
service
.
type
=
type
...
...
spec/models/integration_spec.rb
View file @
2930cf7c
...
...
@@ -33,28 +33,28 @@ RSpec.describe Integration do
end
with_them
do
it
'validates the
service
'
do
expect
(
build
(
:
service
,
project_id:
project_id
,
group_id:
group_id
,
instance:
instance
).
valid?
).
to
eq
(
valid
)
it
'validates the
integration
'
do
expect
(
build
(
:
integration
,
project_id:
project_id
,
group_id:
group_id
,
instance:
instance
).
valid?
).
to
eq
(
valid
)
end
end
context
'with existing
service
s'
do
context
'with existing
integration
s'
do
before_all
do
create
(
:
service
,
:instance
)
create
(
:
service
,
project:
project
)
create
(
:
service
,
group:
group
,
project:
nil
)
create
(
:
integration
,
:instance
)
create
(
:
integration
,
project:
project
)
create
(
:
integration
,
group:
group
,
project:
nil
)
end
it
'allows only one instance
service
per type'
do
expect
(
build
(
:
service
,
:instance
)).
to
be_invalid
it
'allows only one instance
integration
per type'
do
expect
(
build
(
:
integration
,
:instance
)).
to
be_invalid
end
it
'allows only one project
service
per type'
do
expect
(
build
(
:
service
,
project:
project
)).
to
be_invalid
it
'allows only one project
integration
per type'
do
expect
(
build
(
:
integration
,
project:
project
)).
to
be_invalid
end
it
'allows only one group
service
per type'
do
expect
(
build
(
:
service
,
group:
group
,
project:
nil
)).
to
be_invalid
it
'allows only one group
integration
per type'
do
expect
(
build
(
:
integration
,
group:
group
,
project:
nil
)).
to
be_invalid
end
end
end
...
...
@@ -79,57 +79,57 @@ RSpec.describe Integration do
end
describe
'.by_type'
do
let!
(
:
service
1
)
{
create
(
:jira_integration
)
}
let!
(
:
service
2
)
{
create
(
:jira_integration
)
}
let!
(
:
service
3
)
{
create
(
:redmine_integration
)
}
let!
(
:
integration
1
)
{
create
(
:jira_integration
)
}
let!
(
:
integration
2
)
{
create
(
:jira_integration
)
}
let!
(
:
integration
3
)
{
create
(
:redmine_integration
)
}
subject
{
described_class
.
by_type
(
type
)
}
context
'when type is "JiraService"'
do
let
(
:type
)
{
'JiraService'
}
it
{
is_expected
.
to
match_array
([
service1
,
service
2
])
}
it
{
is_expected
.
to
match_array
([
integration1
,
integration
2
])
}
end
context
'when type is "RedmineService"'
do
let
(
:type
)
{
'RedmineService'
}
it
{
is_expected
.
to
match_array
([
service
3
])
}
it
{
is_expected
.
to
match_array
([
integration
3
])
}
end
end
describe
'.for_group'
do
let!
(
:
service
1
)
{
create
(
:jira_integration
,
project_id:
nil
,
group_id:
group
.
id
)
}
let!
(
:
service
2
)
{
create
(
:jira_integration
)
}
let!
(
:
integration
1
)
{
create
(
:jira_integration
,
project_id:
nil
,
group_id:
group
.
id
)
}
let!
(
:
integration
2
)
{
create
(
:jira_integration
)
}
it
'returns the right group
service
'
do
expect
(
described_class
.
for_group
(
group
)).
to
match_array
([
service
1
])
it
'returns the right group
integration
'
do
expect
(
described_class
.
for_group
(
group
)).
to
match_array
([
integration
1
])
end
end
describe
'.confidential_note_hooks'
do
it
'includes
service
s where confidential_note_events is true'
do
create
(
:
service
,
active:
true
,
confidential_note_events:
true
)
it
'includes
integration
s where confidential_note_events is true'
do
create
(
:
integration
,
active:
true
,
confidential_note_events:
true
)
expect
(
described_class
.
confidential_note_hooks
.
count
).
to
eq
1
end
it
'excludes
service
s where confidential_note_events is false'
do
create
(
:
service
,
active:
true
,
confidential_note_events:
false
)
it
'excludes
integration
s where confidential_note_events is false'
do
create
(
:
integration
,
active:
true
,
confidential_note_events:
false
)
expect
(
described_class
.
confidential_note_hooks
.
count
).
to
eq
0
end
end
describe
'.alert_hooks'
do
it
'includes
service
s where alert_events is true'
do
create
(
:
service
,
active:
true
,
alert_events:
true
)
it
'includes
integration
s where alert_events is true'
do
create
(
:
integration
,
active:
true
,
alert_events:
true
)
expect
(
described_class
.
alert_hooks
.
count
).
to
eq
1
end
it
'excludes
service
s where alert_events is false'
do
create
(
:
service
,
active:
true
,
alert_events:
false
)
it
'excludes
integration
s where alert_events is false'
do
create
(
:
integration
,
active:
true
,
alert_events:
false
)
expect
(
described_class
.
alert_hooks
.
count
).
to
eq
0
end
...
...
@@ -137,35 +137,35 @@ RSpec.describe Integration do
end
describe
'#operating?'
do
it
'is false when the
service
is not active'
do
expect
(
build
(
:
service
).
operating?
).
to
eq
(
false
)
it
'is false when the
integration
is not active'
do
expect
(
build
(
:
integration
).
operating?
).
to
eq
(
false
)
end
it
'is false when the
service
is not persisted'
do
expect
(
build
(
:
service
,
active:
true
).
operating?
).
to
eq
(
false
)
it
'is false when the
integration
is not persisted'
do
expect
(
build
(
:
integration
,
active:
true
).
operating?
).
to
eq
(
false
)
end
it
'is true when the
service
is active and persisted'
do
expect
(
create
(
:
service
,
active:
true
).
operating?
).
to
eq
(
true
)
it
'is true when the
integration
is active and persisted'
do
expect
(
create
(
:
integration
,
active:
true
).
operating?
).
to
eq
(
true
)
end
end
describe
'#testable?'
do
context
'when integration is project-level'
do
subject
{
build
(
:
service
,
project:
project
)
}
subject
{
build
(
:
integration
,
project:
project
)
}
it
{
is_expected
.
to
be_testable
}
end
context
'when integration is not project-level'
do
subject
{
build
(
:
service
,
project:
nil
)
}
subject
{
build
(
:
integration
,
project:
nil
)
}
it
{
is_expected
.
not_to
be_testable
}
end
end
describe
'#test'
do
let
(
:integration
)
{
build
(
:
service
,
project:
project
)
}
let
(
:integration
)
{
build
(
:
integration
,
project:
project
)
}
let
(
:data
)
{
'test'
}
it
'calls #execute'
do
...
...
@@ -186,32 +186,32 @@ RSpec.describe Integration do
end
describe
'#project_level?'
do
it
'is true when
service
has a project'
do
expect
(
build
(
:
service
,
project:
project
)).
to
be_project_level
it
'is true when
integration
has a project'
do
expect
(
build
(
:
integration
,
project:
project
)).
to
be_project_level
end
it
'is false when
service
has no project'
do
expect
(
build
(
:
service
,
project:
nil
)).
not_to
be_project_level
it
'is false when
integration
has no project'
do
expect
(
build
(
:
integration
,
project:
nil
)).
not_to
be_project_level
end
end
describe
'#group_level?'
do
it
'is true when
service
has a group'
do
expect
(
build
(
:
service
,
group:
group
)).
to
be_group_level
it
'is true when
integration
has a group'
do
expect
(
build
(
:
integration
,
group:
group
)).
to
be_group_level
end
it
'is false when
service
has no group'
do
expect
(
build
(
:
service
,
group:
nil
)).
not_to
be_group_level
it
'is false when
integration
has no group'
do
expect
(
build
(
:
integration
,
group:
nil
)).
not_to
be_group_level
end
end
describe
'#instance_level?'
do
it
'is true when
service
has instance-level integration'
do
expect
(
build
(
:
service
,
:instance
)).
to
be_instance_level
it
'is true when
integration
has instance-level integration'
do
expect
(
build
(
:
integration
,
:instance
)).
to
be_instance_level
end
it
'is false when
service
does not have instance-level integration'
do
expect
(
build
(
:
service
,
instance:
false
)).
not_to
be_instance_level
it
'is false when
integration
does not have instance-level integration'
do
expect
(
build
(
:
integration
,
instance:
false
)).
not_to
be_instance_level
end
end
...
...
@@ -231,19 +231,19 @@ RSpec.describe Integration do
end
describe
'.find_or_initialize_all_non_project_specific'
do
shared_examples
'
service
instances'
do
it
'returns the available
service
instances'
do
shared_examples
'
integration
instances'
do
it
'returns the available
integration
instances'
do
expect
(
Integration
.
find_or_initialize_all_non_project_specific
(
Integration
.
for_instance
).
map
(
&
:to_param
))
.
to
match_array
(
Integration
.
available_integration_names
(
include_project_specific:
false
))
end
it
'does not create
service
instances'
do
it
'does not create
integration
instances'
do
expect
{
Integration
.
find_or_initialize_all_non_project_specific
(
Integration
.
for_instance
)
}
.
not_to
change
(
Integration
,
:count
)
end
end
it_behaves_like
'
service
instances'
it_behaves_like
'
integration
instances'
context
'with all existing instances'
do
before
do
...
...
@@ -252,15 +252,15 @@ RSpec.describe Integration do
)
end
it_behaves_like
'
service
instances'
it_behaves_like
'
integration
instances'
context
'with a previous existing
service (MockCiService) and a new service
(Asana)'
do
context
'with a previous existing
integration (MockCiService) and a new integration
(Asana)'
do
before
do
Integration
.
insert
({
type:
'MockCiService'
,
instance:
true
})
Integration
.
delete_by
(
type:
'AsanaService'
,
instance:
true
)
end
it_behaves_like
'
service
instances'
it_behaves_like
'
integration
instances'
end
end
...
...
@@ -269,7 +269,7 @@ RSpec.describe Integration do
create
(
:jira_integration
,
:instance
)
end
it_behaves_like
'
service
instances'
it_behaves_like
'
integration
instances'
end
end
...
...
@@ -320,31 +320,31 @@ RSpec.describe Integration do
}
end
shared_examples
'
service
creation from an integration'
do
it
'creates a correct
service
for a project integration'
do
service
=
described_class
.
build_from_integration
(
integration
,
project_id:
project
.
id
)
shared_examples
'
integration
creation from an integration'
do
it
'creates a correct
integration
for a project integration'
do
new_integration
=
described_class
.
build_from_integration
(
integration
,
project_id:
project
.
id
)
expect
(
service
).
to
be_active
expect
(
service
.
url
).
to
eq
(
url
)
expect
(
service
.
api_url
).
to
eq
(
api_url
)
expect
(
service
.
username
).
to
eq
(
username
)
expect
(
service
.
password
).
to
eq
(
password
)
expect
(
service
.
instance
).
to
eq
(
false
)
expect
(
service
.
project
).
to
eq
(
project
)
expect
(
service
.
group
).
to
eq
(
nil
)
expect
(
new_integration
).
to
be_active
expect
(
new_integration
.
url
).
to
eq
(
url
)
expect
(
new_integration
.
api_url
).
to
eq
(
api_url
)
expect
(
new_integration
.
username
).
to
eq
(
username
)
expect
(
new_integration
.
password
).
to
eq
(
password
)
expect
(
new_integration
.
instance
).
to
eq
(
false
)
expect
(
new_integration
.
project
).
to
eq
(
project
)
expect
(
new_integration
.
group
).
to
eq
(
nil
)
end
it
'creates a correct
service
for a group integration'
do
service
=
described_class
.
build_from_integration
(
integration
,
group_id:
group
.
id
)
expect
(
service
).
to
be_active
expect
(
service
.
url
).
to
eq
(
url
)
expect
(
service
.
api_url
).
to
eq
(
api_url
)
expect
(
service
.
username
).
to
eq
(
username
)
expect
(
service
.
password
).
to
eq
(
password
)
expect
(
service
.
instance
).
to
eq
(
false
)
expect
(
service
.
project
).
to
eq
(
nil
)
expect
(
service
.
group
).
to
eq
(
group
)
it
'creates a correct
integration
for a group integration'
do
new_integration
=
described_class
.
build_from_integration
(
integration
,
group_id:
group
.
id
)
expect
(
new_integration
).
to
be_active
expect
(
new_integration
.
url
).
to
eq
(
url
)
expect
(
new_integration
.
api_url
).
to
eq
(
api_url
)
expect
(
new_integration
.
username
).
to
eq
(
username
)
expect
(
new_integration
.
password
).
to
eq
(
password
)
expect
(
new_integration
.
instance
).
to
eq
(
false
)
expect
(
new_integration
.
project
).
to
eq
(
nil
)
expect
(
new_integration
.
group
).
to
eq
(
group
)
end
end
...
...
@@ -355,7 +355,7 @@ RSpec.describe Integration do
create
(
:jira_integration
,
:without_properties_callback
,
properties:
properties
.
merge
(
additional:
'something'
))
end
it_behaves_like
'
service
creation from an integration'
it_behaves_like
'
integration
creation from an integration'
end
context
'when data are stored in separated fields'
do
...
...
@@ -363,7 +363,7 @@ RSpec.describe Integration do
create
(
:jira_integration
,
data_params
.
merge
(
properties:
{}))
end
it_behaves_like
'
service
creation from an integration'
it_behaves_like
'
integration
creation from an integration'
end
context
'when data are stored in both properties and separated fields'
do
...
...
@@ -374,7 +374,7 @@ RSpec.describe Integration do
end
end
it_behaves_like
'
service
creation from an integration'
it_behaves_like
'
integration
creation from an integration'
end
end
end
...
...
@@ -565,17 +565,17 @@ RSpec.describe Integration do
end
describe
'.integration_name_to_model'
do
it
'returns the model for the given
service
name'
do
it
'returns the model for the given
integration
name'
do
expect
(
described_class
.
integration_name_to_model
(
'asana'
)).
to
eq
(
Integrations
::
Asana
)
end
it
'raises an error if
service
name is invalid'
do
it
'raises an error if
integration
name is invalid'
do
expect
{
described_class
.
integration_name_to_model
(
'foo'
)
}.
to
raise_exception
(
NameError
,
/uninitialized constant FooService/
)
end
end
describe
"{property}_changed?"
do
let
(
:
service
)
do
let
(
:
integration
)
do
Integrations
::
Bamboo
.
create!
(
project:
project
,
properties:
{
...
...
@@ -587,35 +587,35 @@ RSpec.describe Integration do
end
it
"returns false when the property has not been assigned a new value"
do
service
.
username
=
"key_changed"
expect
(
service
.
bamboo_url_changed?
).
to
be_falsy
integration
.
username
=
"key_changed"
expect
(
integration
.
bamboo_url_changed?
).
to
be_falsy
end
it
"returns true when the property has been assigned a different value"
do
service
.
bamboo_url
=
"http://example.com"
expect
(
service
.
bamboo_url_changed?
).
to
be_truthy
integration
.
bamboo_url
=
"http://example.com"
expect
(
integration
.
bamboo_url_changed?
).
to
be_truthy
end
it
"returns true when the property has been assigned a different value twice"
do
service
.
bamboo_url
=
"http://example.com"
service
.
bamboo_url
=
"http://example.com"
expect
(
service
.
bamboo_url_changed?
).
to
be_truthy
integration
.
bamboo_url
=
"http://example.com"
integration
.
bamboo_url
=
"http://example.com"
expect
(
integration
.
bamboo_url_changed?
).
to
be_truthy
end
it
"returns false when the property has been re-assigned the same value"
do
service
.
bamboo_url
=
'http://gitlab.com'
expect
(
service
.
bamboo_url_changed?
).
to
be_falsy
integration
.
bamboo_url
=
'http://gitlab.com'
expect
(
integration
.
bamboo_url_changed?
).
to
be_falsy
end
it
"returns false when the property has been assigned a new value then saved"
do
service
.
bamboo_url
=
'http://example.com'
service
.
save!
expect
(
service
.
bamboo_url_changed?
).
to
be_falsy
integration
.
bamboo_url
=
'http://example.com'
integration
.
save!
expect
(
integration
.
bamboo_url_changed?
).
to
be_falsy
end
end
describe
"{property}_touched?"
do
let
(
:
service
)
do
let
(
:
integration
)
do
Integrations
::
Bamboo
.
create!
(
project:
project
,
properties:
{
...
...
@@ -627,35 +627,35 @@ RSpec.describe Integration do
end
it
"returns false when the property has not been assigned a new value"
do
service
.
username
=
"key_changed"
expect
(
service
.
bamboo_url_touched?
).
to
be_falsy
integration
.
username
=
"key_changed"
expect
(
integration
.
bamboo_url_touched?
).
to
be_falsy
end
it
"returns true when the property has been assigned a different value"
do
service
.
bamboo_url
=
"http://example.com"
expect
(
service
.
bamboo_url_touched?
).
to
be_truthy
integration
.
bamboo_url
=
"http://example.com"
expect
(
integration
.
bamboo_url_touched?
).
to
be_truthy
end
it
"returns true when the property has been assigned a different value twice"
do
service
.
bamboo_url
=
"http://example.com"
service
.
bamboo_url
=
"http://example.com"
expect
(
service
.
bamboo_url_touched?
).
to
be_truthy
integration
.
bamboo_url
=
"http://example.com"
integration
.
bamboo_url
=
"http://example.com"
expect
(
integration
.
bamboo_url_touched?
).
to
be_truthy
end
it
"returns true when the property has been re-assigned the same value"
do
service
.
bamboo_url
=
'http://gitlab.com'
expect
(
service
.
bamboo_url_touched?
).
to
be_truthy
integration
.
bamboo_url
=
'http://gitlab.com'
expect
(
integration
.
bamboo_url_touched?
).
to
be_truthy
end
it
"returns false when the property has been assigned a new value then saved"
do
service
.
bamboo_url
=
'http://example.com'
service
.
save!
expect
(
service
.
bamboo_url_changed?
).
to
be_falsy
integration
.
bamboo_url
=
'http://example.com'
integration
.
save!
expect
(
integration
.
bamboo_url_changed?
).
to
be_falsy
end
end
describe
"{property}_was"
do
let
(
:
service
)
do
let
(
:
integration
)
do
Integrations
::
Bamboo
.
create!
(
project:
project
,
properties:
{
...
...
@@ -667,35 +667,35 @@ RSpec.describe Integration do
end
it
"returns nil when the property has not been assigned a new value"
do
service
.
username
=
"key_changed"
expect
(
service
.
bamboo_url_was
).
to
be_nil
integration
.
username
=
"key_changed"
expect
(
integration
.
bamboo_url_was
).
to
be_nil
end
it
"returns the previous value when the property has been assigned a different value"
do
service
.
bamboo_url
=
"http://example.com"
expect
(
service
.
bamboo_url_was
).
to
eq
(
'http://gitlab.com'
)
integration
.
bamboo_url
=
"http://example.com"
expect
(
integration
.
bamboo_url_was
).
to
eq
(
'http://gitlab.com'
)
end
it
"returns initial value when the property has been re-assigned the same value"
do
service
.
bamboo_url
=
'http://gitlab.com'
expect
(
service
.
bamboo_url_was
).
to
eq
(
'http://gitlab.com'
)
integration
.
bamboo_url
=
'http://gitlab.com'
expect
(
integration
.
bamboo_url_was
).
to
eq
(
'http://gitlab.com'
)
end
it
"returns initial value when the property has been assigned multiple values"
do
service
.
bamboo_url
=
"http://example.com"
service
.
bamboo_url
=
"http://example.org"
expect
(
service
.
bamboo_url_was
).
to
eq
(
'http://gitlab.com'
)
integration
.
bamboo_url
=
"http://example.com"
integration
.
bamboo_url
=
"http://example.org"
expect
(
integration
.
bamboo_url_was
).
to
eq
(
'http://gitlab.com'
)
end
it
"returns nil when the property has been assigned a new value then saved"
do
service
.
bamboo_url
=
'http://example.com'
service
.
save!
expect
(
service
.
bamboo_url_was
).
to
be_nil
integration
.
bamboo_url
=
'http://example.com'
integration
.
save!
expect
(
integration
.
bamboo_url_was
).
to
be_nil
end
end
describe
'initialize
service
with no properties'
do
let
(
:
service
)
do
describe
'initialize
integration
with no properties'
do
let
(
:
integration
)
do
Integrations
::
Bugzilla
.
create!
(
project:
project
,
project_url:
'http://gitlab.example.com'
...
...
@@ -703,16 +703,16 @@ RSpec.describe Integration do
end
it
'does not raise error'
do
expect
{
service
}.
not_to
raise_error
expect
{
integration
}.
not_to
raise_error
end
it
'sets data correctly'
do
expect
(
service
.
data_fields
.
project_url
).
to
eq
(
'http://gitlab.example.com'
)
expect
(
integration
.
data_fields
.
project_url
).
to
eq
(
'http://gitlab.example.com'
)
end
end
describe
'#api_field_names'
do
let
(
:fake_
service
)
do
let
(
:fake_
integration
)
do
Class
.
new
(
Integration
)
do
def
fields
[
...
...
@@ -728,8 +728,8 @@ RSpec.describe Integration do
end
end
let
(
:
service
)
do
fake_
service
.
new
(
properties:
[
let
(
:
integration
)
do
fake_
integration
.
new
(
properties:
[
{
token:
'token-value'
},
{
api_token:
'api_token-value'
},
{
key:
'key-value'
},
...
...
@@ -741,16 +741,16 @@ RSpec.describe Integration do
end
it
'filters out sensitive fields'
do
expect
(
service
.
api_field_names
).
to
eq
([
'safe_field'
])
expect
(
integration
.
api_field_names
).
to
eq
([
'safe_field'
])
end
end
context
'logging'
do
let
(
:
service
)
{
build
(
:service
,
project:
project
)
}
let
(
:
integration
)
{
build
(
:integration
,
project:
project
)
}
let
(
:test_message
)
{
"test message"
}
let
(
:arguments
)
do
{
service_class:
service
.
class
.
name
,
service_class:
integration
.
class
.
name
,
project_path:
project
.
full_path
,
project_id:
project
.
id
,
message:
test_message
,
...
...
@@ -761,20 +761,20 @@ RSpec.describe Integration do
it
'logs info messages using json logger'
do
expect
(
Gitlab
::
JsonLogger
).
to
receive
(
:info
).
with
(
arguments
)
service
.
log_info
(
test_message
,
additional_argument:
'some argument'
)
integration
.
log_info
(
test_message
,
additional_argument:
'some argument'
)
end
it
'logs error messages using json logger'
do
expect
(
Gitlab
::
JsonLogger
).
to
receive
(
:error
).
with
(
arguments
)
service
.
log_error
(
test_message
,
additional_argument:
'some argument'
)
integration
.
log_error
(
test_message
,
additional_argument:
'some argument'
)
end
context
'when project is nil'
do
let
(
:project
)
{
nil
}
let
(
:arguments
)
do
{
service_class:
service
.
class
.
name
,
service_class:
integration
.
class
.
name
,
project_path:
nil
,
project_id:
nil
,
message:
test_message
,
...
...
@@ -785,7 +785,7 @@ RSpec.describe Integration do
it
'logs info messages using json logger'
do
expect
(
Gitlab
::
JsonLogger
).
to
receive
(
:info
).
with
(
arguments
)
service
.
log_info
(
test_message
,
additional_argument:
'some argument'
)
integration
.
log_info
(
test_message
,
additional_argument:
'some argument'
)
end
end
end
...
...
spec/models/project_spec.rb
View file @
2930cf7c
...
...
@@ -1359,51 +1359,51 @@ RSpec.describe Project, factory_default: :keep do
project
.
reload
.
has_external_issue_tracker
end
it
'is false when external issue tracker
service
is not active'
do
create
(
:
service
,
project:
project
,
category:
'issue_tracker'
,
active:
false
)
it
'is false when external issue tracker
integration
is not active'
do
create
(
:
integration
,
project:
project
,
category:
'issue_tracker'
,
active:
false
)
is_expected
.
to
eq
(
false
)
end
it
'is false when other
service
is active'
do
create
(
:
service
,
project:
project
,
category:
'not_issue_tracker'
,
active:
true
)
it
'is false when other
integration
is active'
do
create
(
:
integration
,
project:
project
,
category:
'not_issue_tracker'
,
active:
true
)
is_expected
.
to
eq
(
false
)
end
context
'when there is an active external issue tracker
service
'
do
let!
(
:
service
)
do
create
(
:
service
,
project:
project
,
type:
'JiraService'
,
category:
'issue_tracker'
,
active:
true
)
context
'when there is an active external issue tracker
integration
'
do
let!
(
:
integration
)
do
create
(
:
integration
,
project:
project
,
type:
'JiraService'
,
category:
'issue_tracker'
,
active:
true
)
end
specify
{
is_expected
.
to
eq
(
true
)
}
it
'becomes false when external issue tracker
service
is destroyed'
do
it
'becomes false when external issue tracker
integration
is destroyed'
do
expect
do
Integration
.
find
(
service
.
id
).
delete
Integration
.
find
(
integration
.
id
).
delete
end
.
to
change
{
subject
}.
to
(
false
)
end
it
'becomes false when external issue tracker
service
becomes inactive'
do
it
'becomes false when external issue tracker
integration
becomes inactive'
do
expect
do
service
.
update_column
(
:active
,
false
)
integration
.
update_column
(
:active
,
false
)
end
.
to
change
{
subject
}.
to
(
false
)
end
context
'when there are two active external issue tracker
service
s'
do
let_it_be
(
:second_
service
)
do
create
(
:
service
,
project:
project
,
type:
'CustomIssueTracker'
,
category:
'issue_tracker'
,
active:
true
)
context
'when there are two active external issue tracker
integration
s'
do
let_it_be
(
:second_
integration
)
do
create
(
:
integration
,
project:
project
,
type:
'CustomIssueTracker'
,
category:
'issue_tracker'
,
active:
true
)
end
it
'does not become false when external issue tracker
service
is destroyed'
do
it
'does not become false when external issue tracker
integration
is destroyed'
do
expect
do
Integration
.
find
(
service
.
id
).
delete
Integration
.
find
(
integration
.
id
).
delete
end
.
not_to
change
{
subject
}
end
it
'does not become false when external issue tracker
service
becomes inactive'
do
it
'does not become false when external issue tracker
integration
becomes inactive'
do
expect
do
service
.
update_column
(
:active
,
false
)
integration
.
update_column
(
:active
,
false
)
end
.
not_to
change
{
subject
}
end
end
...
...
@@ -1455,13 +1455,13 @@ RSpec.describe Project, factory_default: :keep do
specify
{
expect
(
has_external_wiki
).
to
eq
(
true
)
}
it
'becomes false if the external wiki
service
is destroyed'
do
it
'becomes false if the external wiki
integration
is destroyed'
do
expect
do
Integration
.
find
(
integration
.
id
).
delete
end
.
to
change
{
has_external_wiki
}.
to
(
false
)
end
it
'becomes false if the external wiki
service
becomes inactive'
do
it
'becomes false if the external wiki
integration
becomes inactive'
do
expect
do
integration
.
update_column
(
:active
,
false
)
end
.
to
change
{
has_external_wiki
}.
to
(
false
)
...
...
@@ -6836,7 +6836,7 @@ RSpec.describe Project, factory_default: :keep do
describe
'with integrations and chat names'
do
subject
{
create
(
:project
)
}
let
(
:integration
)
{
create
(
:
service
,
project:
subject
)
}
let
(
:integration
)
{
create
(
:
integration
,
project:
subject
)
}
before
do
create_list
(
:chat_name
,
5
,
integration:
integration
)
...
...
spec/services/chat_names/authorize_user_service_spec.rb
View file @
2930cf7c
...
...
@@ -4,10 +4,10 @@ require 'spec_helper'
RSpec
.
describe
ChatNames
::
AuthorizeUserService
do
describe
'#execute'
do
subject
{
described_class
.
new
(
service
,
params
)
}
let
(
:integration
)
{
create
(
:integration
)
}
let
(
:result
)
{
subject
.
execute
}
let
(
:service
)
{
create
(
:service
)
}
subject
{
described_class
.
new
(
integration
,
params
)
}
context
'when all parameters are valid'
do
let
(
:params
)
{
{
team_id:
'T0001'
,
team_domain:
'myteam'
,
user_id:
'U0001'
,
user_name:
'user'
}
}
...
...
spec/services/chat_names/find_user_service_spec.rb
View file @
2930cf7c
...
...
@@ -4,7 +4,7 @@ require 'spec_helper'
RSpec
.
describe
ChatNames
::
FindUserService
,
:clean_gitlab_redis_shared_state
do
describe
'#execute'
do
let
(
:integration
)
{
create
(
:
service
)
}
let
(
:integration
)
{
create
(
:
integration
)
}
subject
{
described_class
.
new
(
integration
,
params
).
execute
}
...
...
spec/support/import_export/export_file_helper.rb
View file @
2930cf7c
...
...
@@ -44,7 +44,7 @@ module ExportFileHelper
create
(
:ci_trigger
,
project:
project
)
key
=
create
(
:deploy_key
)
key
.
projects
<<
project
create
(
:
service
,
project:
project
)
create
(
:
integration
,
project:
project
)
create
(
:project_hook
,
project:
project
,
token:
'token'
)
create
(
:protected_branch
,
project:
project
)
...
...
spec/workers/deployments/hooks_worker_spec.rb
View file @
2930cf7c
...
...
@@ -13,7 +13,7 @@ RSpec.describe Deployments::HooksWorker do
it
'executes project services for deployment_hooks'
do
deployment
=
create
(
:deployment
,
:running
)
project
=
deployment
.
project
service
=
create
(
:
service
,
type:
'SlackService'
,
project:
project
,
deployment_events:
true
,
active:
true
)
service
=
create
(
:
integration
,
type:
'SlackService'
,
project:
project
,
deployment_events:
true
,
active:
true
)
expect
(
ProjectServiceWorker
).
to
receive
(
:perform_async
).
with
(
service
.
id
,
an_instance_of
(
Hash
))
...
...
@@ -23,7 +23,7 @@ RSpec.describe Deployments::HooksWorker do
it
'does not execute an inactive service'
do
deployment
=
create
(
:deployment
,
:running
)
project
=
deployment
.
project
create
(
:
service
,
type:
'SlackService'
,
project:
project
,
deployment_events:
true
,
active:
false
)
create
(
:
integration
,
type:
'SlackService'
,
project:
project
,
deployment_events:
true
,
active:
false
)
expect
(
ProjectServiceWorker
).
not_to
receive
(
:perform_async
)
...
...
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