diff options
author | Stan Hu <stanhu@gmail.com> | 2018-03-05 13:37:37 -0800 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2018-03-05 13:38:46 -0800 |
commit | 2d1ceca077a1624a4bdc6aa26ab8a5113a5f6394 (patch) | |
tree | e21b0fcb85052959a673114b0691f5f7233854fc | |
parent | 8a0052c037f025b64159ca8cfe0d3451261c1edb (diff) | |
download | gitlab-ce-2d1ceca077a1624a4bdc6aa26ab8a5113a5f6394.tar.gz |
Don't error out in system hook if user has `nil` datetime columns
Deleting a user would fail in the system hooks if the user had
`nil` column in `datetime` or `updated_at` fields.
Closes #43871
-rw-r--r-- | app/services/system_hooks_service.rb | 4 | ||||
-rw-r--r-- | changelogs/unreleased/sh-fix-issue-43871-system-hooks.yml | 5 | ||||
-rw-r--r-- | spec/services/system_hooks_service_spec.rb | 8 |
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 c40cd5b7548..a538d0c109a 100644 --- a/spec/services/system_hooks_service_spec.rb +++ b/spec/services/system_hooks_service_spec.rb @@ -70,6 +70,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') |