dawn-api 0.10.1 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -4
  3. data/lib/dawn/api/authenticate.rb +33 -7
  4. data/lib/dawn/api/base_api.rb +52 -6
  5. data/lib/dawn/api/health_check.rb +14 -0
  6. data/lib/dawn/api/hosts.rb +16 -3
  7. data/lib/dawn/api/models/account.rb +44 -15
  8. data/lib/dawn/api/models/app/domains.rb +30 -6
  9. data/lib/dawn/api/models/app/drains.rb +30 -6
  10. data/lib/dawn/api/models/app/env.rb +19 -5
  11. data/lib/dawn/api/models/app/gears.rb +31 -7
  12. data/lib/dawn/api/models/app/releases.rb +28 -8
  13. data/lib/dawn/api/models/app.rb +93 -16
  14. data/lib/dawn/api/models/domain.rb +36 -11
  15. data/lib/dawn/api/models/drain.rb +33 -19
  16. data/lib/dawn/api/models/gear.rb +45 -25
  17. data/lib/dawn/api/models/key.rb +33 -15
  18. data/lib/dawn/api/models/login.rb +5 -4
  19. data/lib/dawn/api/models/release.rb +32 -14
  20. data/lib/dawn/api/safe/base_api.rb +3 -3
  21. data/lib/dawn/api/safe/safe_extension.rb +20 -5
  22. data/lib/dawn/api/version.rb +5 -5
  23. data/lib/dawn/api.rb +1 -1
  24. data/spec/api/account_spec.rb +21 -0
  25. data/spec/api/app/domains_spec.rb +30 -0
  26. data/spec/api/app/drains_spec.rb +30 -0
  27. data/spec/api/app/gears_spec.rb +38 -0
  28. data/spec/api/app/releases_spec.rb +30 -0
  29. data/spec/api/app_spec.rb +166 -0
  30. data/spec/api/domain_spec.rb +54 -0
  31. data/spec/api/drain_spec.rb +54 -0
  32. data/spec/api/gear_spec.rb +65 -0
  33. data/spec/api/key_spec.rb +54 -0
  34. data/spec/api/release_spec.rb +13 -0
  35. data/spec/api_spec_helper.rb +18 -0
  36. data/spec/references/data.yml +16 -0
  37. data/spec/seed.rb +70 -0
  38. data/spec/seedlog.log +1454 -0
  39. data/spec/support/vcr.rb +11 -0
  40. data/spec/vcr/Dawn_Account/_current/should_retrieve_current_user_account.yml +51 -0
  41. data/spec/vcr/Dawn_Account/_update/should_update_an_account.yml +99 -0
  42. data/spec/vcr/Dawn_App/_all/should_only_have_an_array_of_apps.yml +62 -0
  43. data/spec/vcr/Dawn_App/_all/should_retrieve_all_user_apps.yml +62 -0
  44. data/spec/vcr/Dawn_App/_create/should_create_a_new_app_given_a_name.yml +51 -0
  45. data/spec/vcr/Dawn_App/_create/should_raise_an_Excon_Errors_UnprocessableEntity_when_an_invalid_name_is_given.yml +49 -0
  46. data/spec/vcr/Dawn_App/_destroy/should_destroy_1_app.yml +49 -0
  47. data/spec/vcr/Dawn_App/_destroy/should_fail_to_destroy_non-existant_app.yml +48 -0
  48. data/spec/vcr/Dawn_App/_domains/should_have_domains.yml +51 -0
  49. data/spec/vcr/Dawn_App/_domains/should_retrieve_domains.yml +98 -0
  50. data/spec/vcr/Dawn_App/_drains/should_have_drains.yml +51 -0
  51. data/spec/vcr/Dawn_App/_find/should_fail_to_find_a_non_existant_app.yml +48 -0
  52. data/spec/vcr/Dawn_App/_find/should_retrieve_1_app_by_id.yml +111 -0
  53. data/spec/vcr/Dawn_App/_find/should_retrieve_1_app_by_name.yml +51 -0
  54. data/spec/vcr/Dawn_App/_gears/should_have_gears.yml +51 -0
  55. data/spec/vcr/Dawn_App/_gears/should_restart_gears.yml +98 -0
  56. data/spec/vcr/Dawn_App/_gears/should_retrieve_gears.yml +98 -0
  57. data/spec/vcr/Dawn_App/_logs/should_fail_to_retrieve_logs_uri_for_a_non_existant_app.yml +48 -0
  58. data/spec/vcr/Dawn_App/_logs/should_retrieve_logs_url_for_app.yml +98 -0
  59. data/spec/vcr/Dawn_App/_releases/should_have_releases.yml +51 -0
  60. data/spec/vcr/Dawn_App/_releases/should_retrieve_releases.yml +98 -0
  61. data/spec/vcr/Dawn_App/_restart/should_fail_to_restart_a_non_existant_app.yml +48 -0
  62. data/spec/vcr/Dawn_App/_scale/should_have_updated_formation.yml +51 -0
  63. data/spec/vcr/Dawn_App/_scale/should_raise_an_IndexError_if_app_key_is_missing.yml +51 -0
  64. data/spec/vcr/Dawn_App/_scale/should_scale_app.yml +98 -0
  65. data/spec/vcr/Dawn_App/_update/should_fail_to_update_non-existant_app.yml +48 -0
  66. data/spec/vcr/Dawn_App_Domains/_all/should_have_only_domains.yml +98 -0
  67. data/spec/vcr/Dawn_App_Domains/_all/should_return_all_domains.yml +98 -0
  68. data/spec/vcr/Dawn_App_Domains/_create/should_create_a_new_domain.yml +99 -0
  69. data/spec/vcr/Dawn_App_Drains/_all/should_have_only_drains.yml +98 -0
  70. data/spec/vcr/Dawn_App_Drains/_all/should_return_all_drains.yml +98 -0
  71. data/spec/vcr/Dawn_App_Drains/_create/should_create_a_new_drain.yml +99 -0
  72. data/spec/vcr/Dawn_App_Gears/_all/should_return_all_gears.yml +98 -0
  73. data/spec/vcr/Dawn_App_Releases/_all/should_return_all_releases.yml +98 -0
  74. data/spec/vcr/Dawn_App_Releases/_create/should_create_a_new_release.yml +423 -0
  75. data/spec/vcr/Dawn_Key/_all/should_retrieve_all_user_keys.yml +52 -0
  76. data/spec/vcr/Dawn_Key/_create/should_create_a_new_sshkey.yml +51 -0
  77. data/spec/vcr/Dawn_Key/_create/should_fail_if_sshkey_is_invalid.yml +49 -0
  78. data/spec/vcr/Dawn_Key/_destroy/should_404_if_key_does_not_exist.yml +48 -0
  79. data/spec/vcr/Dawn_Key/_destroy/should_remove_a_key_by_id.yml +98 -0
  80. data/spec/vcr/Dawn_Key/_find/should_404_if_key_does_not_exist.yml +48 -0
  81. data/spec/vcr/Dawn_Key/_find/should_find_a_key_by_id.yml +99 -0
  82. data/spec/vcr/Dawn_Release/_find/should_find_1_release_by_id.yml +48 -0
  83. metadata +62 -3
  84. data/lib/dawn/api/safe.rb +0 -2
@@ -0,0 +1,54 @@
1
+ require "sshkey"
2
+ require 'api_spec_helper'
3
+
4
+ describe Dawn::Key, :vcr do
5
+ subject { Dawn::Key }
6
+
7
+ let(:testkey) { Dawn::Key.create key: SSHKey.generate.ssh_public_key }
8
+
9
+ it { should be_a Class }
10
+
11
+ describe ".create" do
12
+ it "should create a new sshkey" do
13
+ subject.create(key: SSHKey.generate.ssh_public_key)
14
+ end
15
+
16
+ it "should conflict if sshkey exists" do
17
+ expect { subject.create(key: testkey.key) }.to raise_error(Excon::Errors::UnprocessableEntity)
18
+ end
19
+
20
+ it "should fail if sshkey is invalid" do
21
+ expect { subject.create(key: "invalid key for the win") }.to raise_error(Excon::Errors::UnprocessableEntity)
22
+ end
23
+ end
24
+
25
+ describe ".all" do
26
+ it "should retrieve all user keys" do
27
+ subject.all
28
+ end
29
+
30
+ it "should have only keys" do
31
+ subject.all.all? { |k| expect(k).to be_an_instance_of(Dawn::Key) }
32
+ end
33
+ end
34
+
35
+ describe ".find" do
36
+ it "should find a key by id" do
37
+ subject.find(id: testkey.id)
38
+ end
39
+
40
+ it "should 404 if key does not exist" do
41
+ expect { subject.find(id: -1) }.to raise_error(Excon::Errors::NotFound)
42
+ end
43
+ end
44
+
45
+ describe ".destroy" do
46
+ it "should remove a key by id" do
47
+ subject.destroy(id: testkey.id)
48
+ end
49
+
50
+ it "should 404 if key does not exist" do
51
+ expect { subject.destroy(id: -1) }.to raise_error(Excon::Errors::NotFound)
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,13 @@
1
+ require 'api_spec_helper'
2
+
3
+ describe Dawn::Release, :vcr do
4
+ subject { Dawn::Release }
5
+
6
+ it { should be_a Class }
7
+
8
+ describe ".find" do
9
+ it "should find 1 release by id" do
10
+ subject.find(id: 1)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,18 @@
1
+ $:.unshift(File.expand_path("../lib", File.dirname(__FILE__)))
2
+ require "rspec"
3
+ require "rspec/expectations"
4
+ require "dawn/api"
5
+ require "ostruct"
6
+ require "yaml"
7
+
8
+ $test_store = OpenStruct.new
9
+ $test_store.ref = YAML.load_file(File.expand_path("references/data.yml", File.dirname(__FILE__)))
10
+
11
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
12
+
13
+ RSpec.configure do |config|
14
+ config.mock_with :rspec
15
+ config.color = true
16
+ config.formatter = :documentation
17
+ config.tty = true
18
+ end
@@ -0,0 +1,16 @@
1
+ ---
2
+ apps:
3
+ drain-test: 5
4
+ gear-test: 7
5
+ release-test: 9
6
+ domains-test: 2
7
+ drains-test: 4
8
+ gears-test: 6
9
+ releases-test: 8
10
+ domain-test: 3
11
+ app-test: 15
12
+ env-test: 10
13
+ domains:
14
+ cc-rushers.io: 1
15
+ cookiecrushers.com: 2
16
+ cookie-crusher.net: 3
data/spec/seed.rb ADDED
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift(File.expand_path("../lib", File.dirname(__FILE__)))
3
+ require "dawn/api"
4
+ require "yaml"
5
+
6
+ @seed_log = File.open("seedlog.log", "w")
7
+ @seed_log.sync = true
8
+ Dawn.log = @seed_log
9
+
10
+ @ref = YAML.load_file("references/data.yml") rescue {}
11
+
12
+ def reference(obj)
13
+ case obj
14
+ when Dawn::App
15
+ (@ref["apps"]||={})[obj.name] = obj.id
16
+ when Dawn::Domain
17
+ (@ref["domains"]||={})[obj.url] = obj.id
18
+ when Dawn::Drain
19
+ (@ref["drains"]||={})[obj.url] = obj.id
20
+ when Dawn::Gear
21
+ gears = (@ref["gears"]||={})
22
+ gears[gears.size] = obj.id
23
+ when Dawn::Release
24
+ releases = (@ref["releases"]||={})
25
+ releases[releases.size] = obj.id
26
+ end
27
+ p obj
28
+ end
29
+
30
+ if account = Dawn::Account.safe(:current)
31
+ reference account.safe(:update, account: { username: "IceDragon" })
32
+ end
33
+ Dawn.authenticate(username: "IceDragon", password: "creampuff")
34
+
35
+ reference Dawn::App.safe(:create, app: { name: "app-test" })
36
+
37
+ reference Dawn::App.safe(:create, app: { name: "domains-test" })
38
+ reference Dawn::App.safe(:create, app: { name: "domain-test" })
39
+ if app = Dawn::App.safe(:find, name: "domain-test")
40
+ reference app.domains.safe(:create, domain: { url: "cc-rushers.io" })
41
+ reference app.domains.safe(:create, domain: { url: "cookiecrushers.com" })
42
+ reference app.domains.safe(:create, domain: { url: "cookie-crusher.net" })
43
+ end
44
+
45
+ reference Dawn::App.safe(:create, app: { name: "drains-test" })
46
+ reference Dawn::App.safe(:create, app: { name: "drain-test" })
47
+ if app = Dawn::App.safe(:find, name: "drain-test")
48
+ reference app.drains.safe(:create, drain: { url: "flushme.io" })
49
+ reference app.drains.safe(:create, drain: { url: "toil.com" })
50
+ reference app.drains.safe(:create, drain: { url: "downthedrain.net" })
51
+ end
52
+
53
+ reference Dawn::App.safe(:create, app: { name: "gears-test" })
54
+ reference Dawn::App.safe(:create, app: { name: "gear-test" })
55
+ if app = Dawn::App.find(name: "gear-test")
56
+ #reference app.gears.safe(:create)
57
+ end
58
+
59
+ reference Dawn::App.safe(:create, app: { name: "releases-test" })
60
+ reference Dawn::App.safe(:create, app: { name: "release-test" })
61
+ if app = Dawn::App.find(name: "release-test")
62
+ reference app.releases.safe(:create, {})
63
+ end
64
+
65
+ reference Dawn::App.safe(:create, app: { name: "env-test" })
66
+ if app = Dawn::App.find(name: "env-test")
67
+ app.env.update({ "HOSTNAME" => "cookiesncode.io", "BREAD"=>"wheat" }).safe(:save)
68
+ end
69
+
70
+ File.write("references/data.yml", @ref.to_yaml)