tfa 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 757123af55e697b21d9d564d78f59c27708a861b
4
- data.tar.gz: e89cd5ca7e10c9883fb8fa27574d28d1c7611e59
3
+ metadata.gz: 1fb7180ac2ccb7c877e05e1927763d9bdb0d4e6c
4
+ data.tar.gz: f7d18a024879662a22404c42b1a3ef01975b027e
5
5
  SHA512:
6
- metadata.gz: 9f402f377b28ad237caec3c01d8e8811fe187b604467498063ee5dfb809f5fa6f307e4a82ca36a1acb1cc3159faf97faa376ce1bd7fa30e48982bc9ae29c6d40
7
- data.tar.gz: b5e0240fbc9a499f224df6d1a09ee753e69897c7983bddfed103c27da880e8e37fec63281e5a345c4378c1c9f6ec0a425bddab4beeb3802285cb549e84853a6d
6
+ metadata.gz: 79e854463b20f67ec678ac3c0e0e08e3c00df4ce9fc27df0a0b7b320647d65de78d938fa38f9a3074f3050dd6789fa4f2166c6e24b173c7e540eb33d40fd6efd
7
+ data.tar.gz: 0741cd7c80b47730893ad23fc962d0448a2e8ae3be72a4c98c5ddefab31fe423d8bd6ec4fbefeaa3a2c2b9b2d17c902a37642f73e360a2dfc3cbb725cc79ca23
@@ -7,6 +7,7 @@ module TFA
7
7
 
8
8
  desc "add NAME SECRET", "add a new secret to the database"
9
9
  def add(name, secret)
10
+ secret = clean(secret)
10
11
  storage.save(name, secret)
11
12
  "Added #{name}"
12
13
  end
@@ -18,7 +19,7 @@ module TFA
18
19
 
19
20
  desc "totp NAME", "generate a Time based One Time Password"
20
21
  def totp(name = nil)
21
- TotpCommand.new(storage).run([name])
22
+ TotpCommand.new(storage).run(name)
22
23
  end
23
24
 
24
25
  private
@@ -26,5 +27,13 @@ module TFA
26
27
  def storage
27
28
  @storage ||= Storage.new(filename: options[:filename] || 'tfa')
28
29
  end
30
+
31
+ def clean(secret)
32
+ if secret.include?("=")
33
+ /secret=([^&]*)/.match(secret).captures.first
34
+ else
35
+ secret
36
+ end
37
+ end
29
38
  end
30
39
  end
@@ -1,3 +1,3 @@
1
1
  module TFA
2
- VERSION = "0.0.10"
2
+ VERSION = "0.0.11"
3
3
  end
@@ -0,0 +1,38 @@
1
+ module TFA
2
+ describe CLI do
3
+ subject { CLI.new }
4
+
5
+ def code_for(secret)
6
+ ::ROTP::TOTP.new(secret).now
7
+ end
8
+
9
+ let(:secret) { ::ROTP::Base32.random_base32 }
10
+
11
+ describe "#add" do
12
+ context "when a secret is added" do
13
+ it "adds the secret" do
14
+ subject.add("development", secret)
15
+ expect(subject.show("development")).to eql(secret)
16
+ end
17
+ end
18
+
19
+ context "when a full otpauth string is added" do
20
+ it "strips out the url for just the secret" do
21
+ url = "otpauth://totp/email@email.com?secret=#{secret}&issuer="
22
+
23
+ subject.add("development", url)
24
+ expect(subject.show("development")).to eql(secret)
25
+ end
26
+ end
27
+ end
28
+
29
+ describe "#totp" do
30
+ context "when a single key is given" do
31
+ it "returns a time based one time password" do
32
+ subject.add("development", secret)
33
+ expect(subject.totp("development")).to eql(code_for(secret))
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tfa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - mo khan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-26 00:00:00.000000000 Z
11
+ date: 2015-08-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rotp
@@ -101,6 +101,7 @@ files:
101
101
  - lib/tfa/storage.rb
102
102
  - lib/tfa/totp_command.rb
103
103
  - lib/tfa/version.rb
104
+ - spec/lib/cli_spec.rb
104
105
  - spec/lib/console_spec.rb
105
106
  - spec/lib/totp_command_spec.rb
106
107
  - spec/spec_helper.rb
@@ -130,6 +131,7 @@ signing_key:
130
131
  specification_version: 4
131
132
  summary: A CLI to manage your one time passwords.
132
133
  test_files:
134
+ - spec/lib/cli_spec.rb
133
135
  - spec/lib/console_spec.rb
134
136
  - spec/lib/totp_command_spec.rb
135
137
  - spec/spec_helper.rb