git: 3426627ccab3 - main - security/rubygem-devise-two-factor-rails61: Allow build with rubygem-attr_encrypted 4.*

From: Po-Chuan Hsieh <sunpoet_at_FreeBSD.org>
Date: Sun, 07 May 2023 21:21:14 UTC
The branch main has been updated by sunpoet:

URL: https://cgit.FreeBSD.org/ports/commit/?id=3426627ccab3d9331bfa903579b5f15d1020e5c7

commit 3426627ccab3d9331bfa903579b5f15d1020e5c7
Author:     Po-Chuan Hsieh <sunpoet@FreeBSD.org>
AuthorDate: 2023-05-07 21:14:28 +0000
Commit:     Po-Chuan Hsieh <sunpoet@FreeBSD.org>
CommitDate: 2023-05-07 21:14:28 +0000

    security/rubygem-devise-two-factor-rails61: Allow build with rubygem-attr_encrypted 4.*
    
    - Bump PORTREVISION for package change
    
    Obtained from:  https://github.com/tinfoil/devise-two-factor/commit/e685f91ce62d036259885fbe31fcb4fa930bcfcb
---
 .../rubygem-devise-two-factor-rails61/Makefile     |  3 +-
 .../files/patch-attr_encrypted                     | 48 ++++++++++++++++++++++
 2 files changed, 50 insertions(+), 1 deletion(-)

diff --git a/security/rubygem-devise-two-factor-rails61/Makefile b/security/rubygem-devise-two-factor-rails61/Makefile
index 21274cc41f27..560958696121 100644
--- a/security/rubygem-devise-two-factor-rails61/Makefile
+++ b/security/rubygem-devise-two-factor-rails61/Makefile
@@ -1,5 +1,6 @@
 PORTNAME=	devise-two-factor
 PORTVERSION=	4.0.2
+PORTREVISION=	1
 CATEGORIES=	security rubygems
 MASTER_SITES=	RG
 PKGNAMESUFFIX=	-rails61
@@ -12,7 +13,7 @@ LICENSE=	MIT
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
 RUN_DEPENDS=	rubygem-activesupport61>=0<7.1:devel/rubygem-activesupport61 \
-		rubygem-attr_encrypted>=3<4:security/rubygem-attr_encrypted \
+		rubygem-attr_encrypted>=3<5:security/rubygem-attr_encrypted \
 		rubygem-devise-rails61>=4.0<5:devel/rubygem-devise-rails61 \
 		rubygem-railties61>=0<7.1:www/rubygem-railties61 \
 		rubygem-rotp>=6.0<7:devel/rubygem-rotp
diff --git a/security/rubygem-devise-two-factor-rails61/files/patch-attr_encrypted b/security/rubygem-devise-two-factor-rails61/files/patch-attr_encrypted
new file mode 100644
index 000000000000..10b05cbe309f
--- /dev/null
+++ b/security/rubygem-devise-two-factor-rails61/files/patch-attr_encrypted
@@ -0,0 +1,48 @@
+--- devise-two-factor.gemspec.orig	2023-05-07 17:19:51 UTC
++++ devise-two-factor.gemspec
+@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
+ 
+   s.add_runtime_dependency(%q<railties>.freeze, ["< 7.1"])
+   s.add_runtime_dependency(%q<activesupport>.freeze, ["< 7.1"])
+-  s.add_runtime_dependency(%q<attr_encrypted>.freeze, [">= 1.3", "< 4", "!= 2"])
++  s.add_runtime_dependency(%q<attr_encrypted>.freeze, [">= 1.3", "< 5", "!= 2"])
+   s.add_runtime_dependency(%q<devise>.freeze, ["~> 4.0"])
+   s.add_runtime_dependency(%q<rotp>.freeze, ["~> 6.0"])
+   s.add_development_dependency(%q<activemodel>.freeze, [">= 0"])
+--- spec/devise/models/two_factor_authenticatable_spec.rb.orig	2023-05-07 17:23:37 UTC
++++ spec/devise/models/two_factor_authenticatable_spec.rb
+@@ -64,15 +64,31 @@ describe ::Devise::Models::TwoFactorAuthenticatable do
+ 
+     describe 'otp_secret options' do
+       it 'should be of the key' do
+-        expect(subject.encrypted_attributes[:otp_secret][:key]).to eq('test-key'*8)
++        if attr_encrypted_is_rails_seven_compatible?
++          expect(subject.attr_encrypted_encrypted_attributes[:otp_secret][:key]).to eq('test-key'*8)
++        else
++          expect(subject.encrypted_attributes[:otp_secret][:key]).to eq('test-key'*8)
++        end
+       end
+ 
+       it 'should be of the mode' do
+-        expect(subject.encrypted_attributes[:otp_secret][:mode]).to eq(:per_attribute_iv_and_salt)
++        if attr_encrypted_is_rails_seven_compatible?
++          expect(subject.attr_encrypted_encrypted_attributes[:otp_secret][:mode]).to eq(:per_attribute_iv_and_salt)
++        else
++          expect(subject.encrypted_attributes[:otp_secret][:mode]).to eq(:per_attribute_iv_and_salt)
++        end
+       end
+ 
+       it 'should be of the mode' do
+-        expect(subject.encrypted_attributes[:otp_secret][:algorithm]).to eq('aes-256-cbc')
++        if attr_encrypted_is_rails_seven_compatible?
++          expect(subject.attr_encrypted_encrypted_attributes[:otp_secret][:algorithm]).to eq('aes-256-cbc')
++        else
++          expect(subject.encrypted_attributes[:otp_secret][:algorithm]).to eq('aes-256-cbc')
++        end
++      end
++
++      def attr_encrypted_is_rails_seven_compatible?
++        Gem::Version.new(AttrEncrypted::Version.string) >= Gem::Version.new('4.0.0')
+       end
+     end
+   end