При запуске тестов на общих участниках Gitlab.com все тесты, включающие ROTP, завершаются с ошибкой ArgumentError, ключ должен быть 32 байта. Есть и другие тесты, которые также не проходят, но они не так меня беспокоят, как неудачи ROTP. Я копался в исходном коде для ROTP и определил для версии ROTP, которую я использую (2.1.2), она должна использовать 32-байтовые ключи, и я попытался вручную сказать devise-двухфакторный, чтобы использовать 32-байтовые ключи ( вместо 24) на всякий случай.
Эти тесты также проходят при локальном запуске rspec.
Я старался изо всех сил для отладки бегунов Gitlab.com. Я также проверил версию ROTP и она 2.1.2 локально, в gitlab-runner и на бегунах Gitlab.com, так что это не несоответствие версий. Я использую gitlab-runner 11.9.2 локально.
Я заметил, что devise-two-factor определяет 24-байтовый ключ (который вызывает проблемы только у бегунов Gitlab.com - он все еще работает в производстве, разработке, локальном rspec и локальном gitlab-runner, не переопределяя его), поэтому я попытался указать 32 байта для длины ключа TOTP devise-two-factor, которая должна быть перенаправлена в ROTP, но кажется, что даже если он передается должным образом, он не обрабатывает это должным образом на бегунах Gitlab.com.
Команда, с которой я запускаю gitlab-runner локально (потому что у меня может быть неправильная команда):
gitlab-runner exec docker rspec-integration
Ошибка ROTP:
1) Totp2faAccounts User can enable TOTP
Failure/Error: user.otp_secret = User.generate_otp_secret(32)
ArgumentError:
key must be 32 bytes
# /usr/local/bundle/gems/encryptor-3.0.0/lib/encryptor.rb:72:in `key='
# /usr/local/bundle/gems/encryptor-3.0.0/lib/encryptor.rb:72:in `crypt'
# /usr/local/bundle/gems/encryptor-3.0.0/lib/encryptor.rb:36:in `encrypt'
Ожидаемые результаты: 1-2 сбоя в зависимости от времени проведения испытаний, но ничего, кроме ROTP, которые должны проходить независимо от времени.
Фактические результаты: передает локальный rspec, локальный gitlab-runner, терпит неудачу на общих участниках Gitlab.com.