From 4ec4e50334169230ce6c6742a7a2fd81e757a5a7 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Tue, 13 Feb 2018 20:16:44 +0200 Subject: [PATCH] Ensure unique EPP session id #700 --- app/models/epp_session.rb | 2 +- test/models/epp_session_test.rb | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/models/epp_session.rb b/app/models/epp_session.rb index dd97a91a98..3d489e5673 100644 --- a/app/models/epp_session.rb +++ b/app/models/epp_session.rb @@ -2,5 +2,5 @@ class EppSession < ActiveRecord::Base belongs_to :user, required: true belongs_to :registrar - validates :session_id, presence: true + validates :session_id, uniqueness: true, presence: true end diff --git a/test/models/epp_session_test.rb b/test/models/epp_session_test.rb index a6aca3eca6..497bf441e8 100644 --- a/test/models/epp_session_test.rb +++ b/test/models/epp_session_test.rb @@ -20,4 +20,18 @@ def test_invalid_without_user @epp_session.validate assert @epp_session.invalid? end + + def test_invalid_if_persisted_record_with_the_same_session_id_exists + epp_session = EppSession.new(session_id: @epp_session.session_id, user: @epp_session.user) + epp_session.validate + assert epp_session.invalid? + end + + def test_database_session_id_unique_constraint + epp_session = EppSession.new(session_id: @epp_session.session_id, user: @epp_session.user) + + assert_raises ActiveRecord::RecordNotUnique do + epp_session.save(validate: false) + end + end end