summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Speicher <robert@gitlab.com>2018-03-05 22:42:48 +0000
committerRobert Speicher <robert@gitlab.com>2018-03-05 22:42:48 +0000
commit4ac0a4bf1001941bfa47b0db6a2eedab1e98a36e (patch)
tree4f6723ac0ced02999f03f4bba41eb6cb1274f596
parent6ec655f5c46aab93f435ac9218c7354b0a712160 (diff)
parent2d1ceca077a1624a4bdc6aa26ab8a5113a5f6394 (diff)
downloadgitlab-ce-4ac0a4bf1001941bfa47b0db6a2eedab1e98a36e.tar.gz
Merge branch 'sh-fix-issue-43871-system-hooks' into 'master'
Don't error out in system hook if user has `nil` datetime columns Closes #43871 See merge request gitlab-org/gitlab-ce!17543
-rw-r--r--app/services/system_hooks_service.rb4
-rw-r--r--changelogs/unreleased/sh-fix-issue-43871-system-hooks.yml5
-rw-r--r--spec/services/system_hooks_service_spec.rb8
3 files changed, 15 insertions, 2 deletions
diff --git a/app/services/system_hooks_service.rb b/app/services/system_hooks_service.rb
index af8c02a10b7..ba7946fd23c 100644
--- a/app/services/system_hooks_service.rb
+++ b/app/services/system_hooks_service.rb
@@ -20,8 +20,8 @@ class SystemHooksService
def build_event_data(model, event)
data = {
event_name: build_event_name(model, event),
- created_at: model.created_at.xmlschema,
- updated_at: model.updated_at.xmlschema
+ created_at: model.created_at&.xmlschema,
+ updated_at: model.updated_at&.xmlschema
}
case model
diff --git a/changelogs/unreleased/sh-fix-issue-43871-system-hooks.yml b/changelogs/unreleased/sh-fix-issue-43871-system-hooks.yml
new file mode 100644
index 00000000000..7c7ef39cb75
--- /dev/null
+++ b/changelogs/unreleased/sh-fix-issue-43871-system-hooks.yml
@@ -0,0 +1,5 @@
+---
+title: Don't error out in system hook if user has `nil` datetime columns
+merge_request:
+author:
+type: fixed
diff --git a/spec/services/system_hooks_service_spec.rb b/spec/services/system_hooks_service_spec.rb
index 08b26597723..51396d34f8f 100644
--- a/spec/services/system_hooks_service_spec.rb
+++ b/spec/services/system_hooks_service_spec.rb
@@ -74,6 +74,14 @@ describe SystemHooksService do
expect(data[:project_visibility]).to eq('private')
end
+ it 'handles nil datetime columns' do
+ user.update_attributes(created_at: nil, updated_at: nil)
+ data = event_data(user, :destroy)
+
+ expect(data[:created_at]).to be(nil)
+ expect(data[:updated_at]).to be(nil)
+ end
+
context 'group_rename' do
it 'contains old and new path' do
allow(group).to receive(:path_was).and_return('old-path')