Запуск тестов с помощью gitlab-runner завершается успешно, запуск их на общих участниках Gitlab.com завершается неудачно - PullRequest
0 голосов
/ 26 июня 2019

При запуске тестов на общих участниках 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.

...