vault 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +41 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +6 -0
  5. data/CHANGELOG.md +5 -0
  6. data/Gemfile +3 -0
  7. data/Gemfile.lock +32 -0
  8. data/LICENSE +362 -0
  9. data/README.md +80 -54
  10. data/Rakefile +4 -40
  11. data/lib/vault.rb +33 -46
  12. data/lib/vault/api.rb +9 -0
  13. data/lib/vault/api/auth_token.rb +90 -0
  14. data/lib/vault/api/help.rb +23 -0
  15. data/lib/vault/api/logical.rb +66 -0
  16. data/lib/vault/api/secret.rb +23 -0
  17. data/lib/vault/api/sys.rb +24 -0
  18. data/lib/vault/api/sys/audit.rb +60 -0
  19. data/lib/vault/api/sys/auth.rb +58 -0
  20. data/lib/vault/api/sys/init.rb +46 -0
  21. data/lib/vault/api/sys/leader.rb +25 -0
  22. data/lib/vault/api/sys/lease.rb +51 -0
  23. data/lib/vault/api/sys/mount.rb +75 -0
  24. data/lib/vault/api/sys/policy.rb +76 -0
  25. data/lib/vault/api/sys/seal.rb +49 -0
  26. data/lib/vault/client.rb +285 -0
  27. data/lib/vault/configurable.rb +48 -0
  28. data/lib/vault/defaults.rb +68 -0
  29. data/lib/vault/errors.rb +48 -0
  30. data/lib/vault/request.rb +19 -0
  31. data/lib/vault/response.rb +20 -0
  32. data/lib/vault/version.rb +1 -6
  33. data/vault.gemspec +25 -0
  34. metadata +97 -98
  35. data/MIT-LICENSE +0 -20
  36. data/lib/vault/associations.rb +0 -39
  37. data/lib/vault/attribute_accessors.rb +0 -29
  38. data/lib/vault/bulk_attributes.rb +0 -17
  39. data/lib/vault/dirty.rb +0 -37
  40. data/lib/vault/finders.rb +0 -24
  41. data/lib/vault/persistance.rb +0 -47
  42. data/lib/vault/properties.rb +0 -68
  43. data/lib/vault/scoping.rb +0 -64
  44. data/lib/vault/storage.rb +0 -4
  45. data/lib/vault/storage/in_memory_store.rb +0 -14
  46. data/lib/vault/storage/yaml_store.rb +0 -52
  47. data/lib/vault/validations.rb +0 -13
  48. data/spec/active_model_compliance_spec.rb +0 -33
  49. data/spec/spec_helper.rb +0 -8
  50. data/spec/support/helpers.rb +0 -16
  51. data/spec/support/storage_api.rb +0 -14
  52. data/spec/vault/associations_spec.rb +0 -73
  53. data/spec/vault/finders_spec.rb +0 -69
  54. data/spec/vault/persistance_spec.rb +0 -126
  55. data/spec/vault/properties_spec.rb +0 -59
  56. data/spec/vault/scoping_spec.rb +0 -53
  57. data/spec/vault/storage/in_memory_store_spec.rb +0 -5
  58. data/spec/vault/storage/yaml_store_spec.rb +0 -29
  59. data/spec/vault_spec.rb +0 -33
@@ -1,69 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Vault do
4
- let :person_klass do
5
- model do
6
- key :name
7
- property :email
8
- property :age
9
- end
10
- end
11
-
12
- let :john do
13
- person_klass.new(:name => "John", :email => "john@example.org", :age => 28)
14
- end
15
-
16
- let :mary do
17
- person_klass.new(:name => "Mary", :email => "mary@example.org", :age => 23)
18
- end
19
-
20
- let :bob do
21
- person_klass.new(:name => "Bob", :email => "bob@example.org", :age => 29)
22
- end
23
-
24
- let :jane do
25
- person_klass.new(:name => "Jane", :email => "jane@example.org", :age => 28)
26
- end
27
-
28
- before do
29
- john.save
30
- mary.save
31
- bob.save
32
- jane.save
33
- end
34
-
35
- describe "#all" do
36
- subject { person_klass.all }
37
-
38
- it { should have(4).elements }
39
-
40
- it "includes all the persisted objects" do
41
- should include(john)
42
- should include(mary)
43
- should include(bob)
44
- should include(jane)
45
- end
46
-
47
- it { should be_an(Enumerable) }
48
- end
49
-
50
- describe "#[]" do
51
- it "finds an object by key" do
52
- person_klass["Bob"].should == bob
53
- end
54
-
55
- it "returns nil if it doesn't find it" do
56
- person_klass["Jamie"].should be_nil
57
- end
58
- end
59
-
60
- describe "#size" do
61
- it "returns the amount of elements in the store" do
62
- person_klass.size.should == 4
63
- end
64
-
65
- it "is aliased to #count" do
66
- person_klass.count.should == person_klass.size
67
- end
68
- end
69
- end
@@ -1,126 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Vault do
4
- let :book_klass do
5
- model do
6
- key :isbn
7
- property :title
8
- property :author
9
- end
10
- end
11
-
12
- let :store do
13
- book_klass.store
14
- end
15
-
16
- let :alice do
17
- book_klass.new("title" => "Alice in Wonderland",
18
- "author" => "Lewis Carroll",
19
- "isbn" => "978-0862033248")
20
- end
21
-
22
- describe "#save" do
23
- it "returns true" do
24
- alice.save.should be(true)
25
- end
26
-
27
- it "marks the object as persisted" do
28
- alice.save
29
- alice.should be_persisted
30
- end
31
-
32
- it "stores the object in the model's store" do
33
- alice.save
34
- store[alice.isbn].should include("title", "author")
35
- end
36
-
37
- it "doesn't store the key among the object properties" do
38
- alice.save
39
- store[alice.isbn].should_not include("isbn")
40
- end
41
-
42
- it "updates an already saved object's attributes" do
43
- alice.save
44
- alice.update(:title => "Alice in Wonderland Illustrated")
45
- alice.save
46
-
47
- store[alice.isbn]["title"].should == "Alice in Wonderland Illustrated"
48
- end
49
-
50
- it "clears the tracked changed attributes" do
51
- alice.save
52
- alice.should_not be_changed
53
- end
54
-
55
- it "doesn't keep the old key when you change it" do
56
- alice.save
57
- alice.update("isbn" => "978-0517223628")
58
- old_isbn = alice.isbn_was
59
- alice.save
60
-
61
- store[old_isbn].should be_blank
62
- store[alice.isbn].should_not be_blank
63
- end
64
-
65
- context "when the object is invalid" do
66
- let :person_klass do
67
- named_model :Person do
68
- key :email
69
- property :name
70
-
71
- validates :email, :presence => true
72
- validates :name, :presence => true
73
- end
74
- end
75
-
76
- let :store do
77
- person_klass.store
78
- end
79
-
80
- let :nameless_person do
81
- person_klass.new(:email => "john.doe@example.org")
82
- end
83
-
84
- it "returns false" do
85
- nameless_person.save.should be(false)
86
- end
87
-
88
- it "doesn't persist the object" do
89
- nameless_person.save
90
- nameless_person.should_not be_persisted
91
- end
92
-
93
- context "but you skip validations" do
94
- it "returns true" do
95
- nameless_person.save(false).should be(true)
96
- end
97
-
98
- it "persists the object anyway" do
99
- nameless_person.save(false)
100
- nameless_person.should be_persisted
101
- end
102
- end
103
- end
104
- end
105
-
106
- describe "#destroy" do
107
- before do
108
- alice.save
109
- end
110
-
111
- it "should no longer be persisted after being destroyed" do
112
- alice.destroy
113
- alice.should_not be_persisted
114
- end
115
-
116
- it "removes the object from the model's store" do
117
- alice.destroy
118
- store[alice.isbn].should be_blank
119
- end
120
-
121
- it "freezes the model" do
122
- alice.destroy
123
- alice.should be_frozen
124
- end
125
- end
126
- end
@@ -1,59 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Vault, "defining properties" do
4
- it "defines accessors for each property" do
5
- person_klass = model do
6
- property :name
7
- property :age
8
- end
9
-
10
- person = person_klass.new
11
- person.should respond_to(:name, :name=, :age, :age=)
12
- end
13
-
14
- it "doesn't define duplicated properties" do
15
- person_klass = model do
16
- property :name
17
- property :name
18
- end
19
-
20
- person_klass.should have(1).properties
21
- end
22
-
23
- it "doesn't support more than one key" do
24
- person_klass = model do
25
- key :name
26
- key :age
27
- end
28
-
29
- person = person_klass.new(:name => "John", :age => 28)
30
- person.save
31
- person.to_key.should == [person.age]
32
- end
33
-
34
- it "can specify default values" do
35
- person_klass = model do
36
- property(:name) { "John" }
37
- property(:age) { 28 }
38
- end
39
-
40
- person = person_klass.new
41
- person.name.should == "John"
42
- person.age.should == 28
43
- end
44
-
45
- it "doesn't flag an attribute as changed if you revert the change" do
46
- person_klass = model do
47
- property :name
48
- end
49
-
50
- person = person_klass.new(:name => "John")
51
- person.name = "Joe"
52
- person.name = "John"
53
- person.should_not be_changed
54
- end
55
-
56
- it "provides 'dirty' attribute tracking" do
57
- model.included_modules.should include(ActiveModel::Dirty)
58
- end
59
- end
@@ -1,53 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Vault do
4
- let :book_klass do
5
- model do
6
- scope :by_lewis_carroll do
7
- { "author" => "Lewis Carroll" }
8
- end
9
-
10
- scope :titled_alice do
11
- { "title" => "Alice in Wonderland" }
12
- end
13
-
14
- key :isbn
15
- property :title
16
- property :author
17
- end
18
- end
19
-
20
- let :alice_in_wonderland do
21
- book_klass.new(:isbn => "978-0517223628",
22
- :title => "Alice in Wonderland",
23
- :author => "Lewis Carroll")
24
- end
25
-
26
- let :through_the_looking_glass do
27
- book_klass.new(:isbn => "978-0140367096",
28
- :title => "Through the Looking Glass",
29
- :author => "Lewis Carroll")
30
- end
31
-
32
- let :the_wonderful_wizard_of_oz do
33
- book_klass.new(:isbn => "978-0451530295",
34
- :title => "The Wonderful Wizard of Oz",
35
- :author => "Lyman Frank Baum")
36
- end
37
-
38
- before do
39
- alice_in_wonderland.save
40
- through_the_looking_glass.save
41
- the_wonderful_wizard_of_oz.save
42
- end
43
-
44
- it "filters the collection by the given scope" do
45
- scoped = book_klass.by_lewis_carroll
46
- scoped.all.should =~ [alice_in_wonderland, through_the_looking_glass]
47
- end
48
-
49
- it "lets you chain scopes" do
50
- scoped = book_klass.by_lewis_carroll.titled_alice
51
- scoped.all.should == [alice_in_wonderland]
52
- end
53
- end
@@ -1,5 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Vault::Storage::InMemoryStore do
4
- it_should_behave_like "A storage adapter"
5
- end
@@ -1,29 +0,0 @@
1
- require "spec_helper"
2
- require "tempfile"
3
-
4
- describe Vault::Storage::YamlStore do
5
- let :path do
6
- begin
7
- file = Tempfile.new("store.yml")
8
- file.path
9
- ensure
10
- file.close
11
- end
12
- end
13
-
14
- subject do
15
- described_class.new(path)
16
- end
17
-
18
- before do
19
- subject["key_a"] = { "attr_1" => "value_1", "attr_2" => "value_2" }
20
- subject["key_b"] = { "attr_3" => "value_3" }
21
- end
22
-
23
- it_should_behave_like "A storage adapter"
24
-
25
- it "serializes the file to disk on #flush" do
26
- subject.flush
27
- YAML.load_file(path).should include("key_a", "key_b")
28
- end
29
- end
@@ -1,33 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Vault do
4
- let :book_klass do
5
- model do
6
- key :isbn
7
- property :title
8
- end
9
- end
10
-
11
- it "can initialize a new model from a hash of attributes" do
12
- book = book_klass.new(:title => "Some Book", :isbn => "1234567890")
13
- book.title.should == "Some Book"
14
- book.isbn.should == "1234567890"
15
- end
16
-
17
- describe "#update" do
18
- let :book do
19
- book_klass.new(:title => "Some Book", :isbn => "1234567890")
20
- end
21
-
22
- it "effectively changes the attribute values" do
23
- book.update(:title => "Awesome Book", :isbn => "0987654321")
24
- book.title.should == "Awesome Book"
25
- book.isbn.should == "0987654321"
26
- end
27
-
28
- it "flags attributes as changed when bulk-updating" do
29
- book.update(:title => "Awesome Book")
30
- book.changes.should include(:title)
31
- end
32
- end
33
- end