vault 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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