Sha256: 404103361fd5a18165a3eb05d3b726e9379273a0f8050813930b1526b5df8478

Contents?: true

Size: 1.15 KB

Versions: 1

Compression:

Stored size: 1.15 KB

Contents

module TFA
  describe TotpCommand do
    subject { TotpCommand.new(storage) }
    let(:storage) { Storage.new(Tempfile.new('test').path) }
    let(:storage) { Storage.new(SecureRandom.uuid) }

    def code_for(secret)
      ::ROTP::TOTP.new(secret).now
    end

    describe "#run" do
      context "when a single key is given" do
        let(:secret) { ::ROTP::Base32.random_base32 }

        it "returns a time based one time password for the authentication secret given" do
          storage.save('development', secret)
          expect(subject.run(["development"])).to eql(code_for(secret))
        end
      end

      context "when no arguments are given" do
        let(:development_secret) { ::ROTP::Base32.random_base32 }
        let(:staging_secret) { ::ROTP::Base32.random_base32 }

        it "returns the one time password for all keys" do
          storage.save('development', development_secret)
          storage.save('staging', staging_secret)
          expect(subject.run([])).to eql([
            { 'development' => code_for(development_secret) }, 
            { 'staging' => code_for(staging_secret) }
          ])
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tfa-0.0.5 spec/lib/totp_command_spec.rb