ultradns-sdk 0.0.2

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.
@@ -0,0 +1,39 @@
1
+ # Copyright 2000-2014 NeuStar, Inc. All rights reserved.
2
+ # NeuStar, the Neustar logo and related names and logos are registered
3
+ # trademarks, service marks or tradenames of NeuStar, Inc. All other
4
+ # product names, company names, marks, logos and symbols may be trademarks
5
+ # of their respective owners.
6
+
7
+ require_relative 'test_helper'
8
+
9
+ class TestAuthentication < Minitest::Unit::TestCase
10
+ include UltraDNSCredentials
11
+
12
+ TEST_ACCOUNT = ENV['ULTRA_ACCOUNT'] || "jdamick"
13
+
14
+ def setup
15
+ setup_credentials
16
+ end
17
+
18
+ def test_auth
19
+ VCR.use_cassette('test_auth') do
20
+ client = Ultradns::Client.new(@user, @pw)
21
+
22
+ pp client.account(TEST_ACCOUNT).zones
23
+
24
+ pp client.accounts
25
+
26
+ result = client.status
27
+ assert result['message'] != nil
28
+ end
29
+ end
30
+
31
+ def test_auth_failure
32
+ VCR.use_cassette('test_auth_failure') do
33
+ client = Ultradns::Client.new(@user, @pw)
34
+ client.instance_eval { @auth[:access_token] = 'xx' }
35
+ response = client.status
36
+ assert response['message'] != nil
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,131 @@
1
+ # Copyright 2000-2014 NeuStar, Inc. All rights reserved.
2
+ # NeuStar, the Neustar logo and related names and logos are registered
3
+ # trademarks, service marks or tradenames of NeuStar, Inc. All other
4
+ # product names, company names, marks, logos and symbols may be trademarks
5
+ # of their respective owners.
6
+
7
+ require_relative 'test_helper'
8
+
9
+ class TestClientApi < Minitest::Unit::TestCase
10
+ include UltraDNSCredentials
11
+
12
+ TEST_ZONE = "ultra-rest-test.ultradnstest"
13
+ TEST_ACCOUNT = ENV['ULTRA_ACCOUNT'] || "jdamick"
14
+
15
+ def setup
16
+ setup_credentials
17
+ end
18
+
19
+ def test_basic_client_apis
20
+ VCR.use_cassette('test_basic_client_apis') do
21
+ client = Ultradns::Client.new(@user, @pw)
22
+
23
+ result = client.status
24
+ assert result['message'] != nil
25
+
26
+ result = client.version
27
+ assert result['version'] != nil
28
+ end
29
+ end
30
+
31
+ def test_tasks_list
32
+ VCR.use_cassette('test_tasks_list') do
33
+ client = Ultradns::Client.new(@user, @pw)
34
+ resp = client.tasks(q: {code: 'PENDING'})
35
+ assert_equal 70002, resp.first['errorCode']
36
+ end
37
+ end
38
+
39
+ def test_account_related_apis
40
+ VCR.use_cassette('test_account_related_apis') do
41
+ client = Ultradns::Client.new(@user, @pw)
42
+
43
+ resp = client.accounts
44
+ assert resp['resultInfo'] != nil
45
+ assert resp['accounts'] != nil
46
+
47
+ resp = client.account(TEST_ACCOUNT).zones
48
+ assert resp['zones'] != nil
49
+
50
+ resp = client.account(TEST_ACCOUNT).users
51
+ assert resp['users'].size > 0
52
+ assert resp['resultInfo']['totalCount'] != nil
53
+ end
54
+ end
55
+
56
+ def test_zone_apis
57
+ VCR.use_cassette('test_zone_apis') do
58
+ client = Ultradns::Client.new(@user, @pw)
59
+
60
+ resp = client.zone('nexgen.neustar.biz').metadata
61
+ assert resp['properties'] != nil
62
+
63
+ resp = client.zone('nexgen.neustarr.biz').metadata
64
+ assert resp.first['errorCode'] != nil
65
+ assert_equal 404, resp.code
66
+ end
67
+ end
68
+
69
+ def test_zone_rrsets_apis
70
+ VCR.use_cassette('test_zone_rrsets_apis') do
71
+ begin
72
+ client = Ultradns::Client.new(@user, @pw)
73
+
74
+ # create a test zone
75
+ resp = client.create_primary_zone(TEST_ACCOUNT, TEST_ZONE)
76
+ assert_equal 201, resp.code
77
+
78
+ resp = client.zone(TEST_ZONE).metadata
79
+ assert resp['properties'] != nil
80
+ assert resp['registrarInfo'] != nil
81
+
82
+ resp = client.zone(TEST_ZONE).rrset('A', 'something').create(60, ['192.168.1.1'])
83
+ assert_equal 201, resp.code
84
+
85
+ resp = client.zone(TEST_ZONE).rrsets
86
+ assert_equal TEST_ZONE, resp["zoneName"]
87
+ assert_equal 3, resp["resultInfo"]["totalCount"]
88
+
89
+ resp = client.zone(TEST_ZONE).rrsets('A')
90
+ assert_equal TEST_ZONE, resp["zoneName"]
91
+ assert_equal 1, resp["resultInfo"]["totalCount"]
92
+ assert_equal "A (1)", resp["rrSets"].first["rrtype"] # why both in 1 field?
93
+ assert_equal 60, resp["rrSets"].first["ttl"]
94
+ assert_equal "192.168.1.1", resp["rrSets"].first["rdata"].first
95
+
96
+
97
+ resp = client.zone(TEST_ZONE).rrset('A', 'something.' + TEST_ZONE).list
98
+ assert_equal TEST_ZONE, resp["zoneName"]
99
+ assert resp["rrSets"] != nil
100
+
101
+ resp = client.zone(TEST_ZONE).rrset('A', 'something.' + TEST_ZONE).update(30)
102
+ assert 200, resp.code # docs say 201, but it appears to give back 200..
103
+
104
+ resp = client.zone(TEST_ZONE).rrset('A', 'something.' + TEST_ZONE).list
105
+ assert_equal 30, resp["rrSets"].first["ttl"]
106
+
107
+ # create a simple Traffic Controller Pool
108
+ resp = client.zone(TEST_ZONE).rrset('A', 'something.' + TEST_ZONE)
109
+ .profile({
110
+ '@context' => 'http://schemas.ultradns.com/RDPool.jsonschema',
111
+ description: "Pooled Records Test",
112
+ order: "RANDOM"
113
+ })
114
+
115
+ assert_equal "Successful", resp['message']
116
+
117
+ # add another ip
118
+ resp = client.zone(TEST_ZONE).rrset('A', 'something.' + TEST_ZONE).update(60, ['192.168.3.3'])
119
+
120
+
121
+ resp = client.zone(TEST_ZONE).rrset('A', 'something.' + TEST_ZONE).list
122
+ assert_equal "RANDOM", resp['rrSets'].first['profile']['order']
123
+ assert_equal 2, resp['rrSets'].first['rdata'].size
124
+
125
+ ensure
126
+ client.zone(TEST_ZONE).delete
127
+ end
128
+ end
129
+ end
130
+
131
+ end
@@ -0,0 +1,54 @@
1
+ # Copyright 2000-2014 NeuStar, Inc. All rights reserved.
2
+ # NeuStar, the Neustar logo and related names and logos are registered
3
+ # trademarks, service marks or tradenames of NeuStar, Inc. All other
4
+ # product names, company names, marks, logos and symbols may be trademarks
5
+ # of their respective owners.
6
+
7
+ $:.unshift(File.expand_path(File.join('..', 'lib'), File.dirname(__FILE__)))
8
+
9
+ require 'pp'
10
+
11
+ require 'simplecov'
12
+ SimpleCov.start do
13
+ use_merging true
14
+ command_name "MiniTest #{Time.now}"
15
+ add_group 'Service', 'service'
16
+ add_group 'Library', 'lib'
17
+ add_filter 'vendor' # Don't include vendored stuff
18
+ add_filter 'test' # Don't include test stuff
19
+ end
20
+
21
+ require "minitest/autorun"
22
+ require "mocha/mini_test"
23
+ require 'ultradns'
24
+ require 'vcr'
25
+
26
+
27
+ VCR.configure do |c|
28
+ c.cassette_library_dir = File.join(File.dirname(__FILE__), 'fixtures', 'vcr_cassettes')
29
+ #c.hook_into :webmock # or :fakeweb
30
+ c.hook_into :fakeweb
31
+ c.filter_sensitive_data('SECRET') do |interaction|
32
+ #puts "interaction.request.body = #{interaction.request.body}"
33
+ interaction.request.body.match("password=(.*)&")[1] rescue nil # dont store the password
34
+ end
35
+ end
36
+
37
+
38
+
39
+ module UltraDNSCredentials
40
+ def setup_credentials
41
+ if ENV['RECORD']
42
+ @user = ENV['ULTRA_USER']
43
+ @pw = ENV['ULTRA_PW']
44
+
45
+ if @user == nil || @user == '' || @pw == nil || @pw == ''
46
+ puts "\n\n------------------------------------------------------------"
47
+ puts "ERROR - Please set ULTRA_USER & ULTRA_PW"
48
+ puts "Example: \nULTRA_USER=me ULTRA_PW=blah bundle exec rake test\n"
49
+ puts "------------------------------------------------------------\n\n"
50
+ raise "Invalid UltraDNS account user name or password"
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,32 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'ultradns/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "ultradns-sdk"
8
+ spec.version = Ultradns::VERSION
9
+ spec.authors = ["ultradns"]
10
+ spec.email = ["ultrasupport@neustar.biz"]
11
+ spec.summary = %q{UltraDNS SDK for manipulating zones managed by UltraDNS}
12
+ spec.description = %q{Manipulate zones or add, update, remove records in UltraDNS}
13
+ spec.homepage = ""
14
+ spec.license = "Apache 2.0"
15
+
16
+
17
+ spec.files = `git ls-files -z`.split("\x0")
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_dependency "httparty", "~> 0.13.1"
23
+
24
+ spec.add_development_dependency "bundler", "~> 1.6"
25
+ spec.add_development_dependency "rake"
26
+ spec.add_development_dependency "mocha", "~> 1.1.0"
27
+ spec.add_development_dependency "minitest", "~> 5.4.0"
28
+ spec.add_development_dependency "simplecov", "~> 0.9.0"
29
+ spec.add_development_dependency "vcr", "~> 2.9.2"
30
+ spec.add_development_dependency "fakeweb", '>= 1.3.0'
31
+
32
+ end
metadata ADDED
@@ -0,0 +1,191 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ultradns-sdk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - ultradns
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-07-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httparty
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.13.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.13.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.6'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.6'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: mocha
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 1.1.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 1.1.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: minitest
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 5.4.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 5.4.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.9.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.9.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: vcr
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 2.9.2
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 2.9.2
111
+ - !ruby/object:Gem::Dependency
112
+ name: fakeweb
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: 1.3.0
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: 1.3.0
125
+ description: Manipulate zones or add, update, remove records in UltraDNS
126
+ email:
127
+ - ultrasupport@neustar.biz
128
+ executables: []
129
+ extensions: []
130
+ extra_rdoc_files: []
131
+ files:
132
+ - ".gitignore"
133
+ - ".travis.yml"
134
+ - Gemfile
135
+ - LICENSE
136
+ - README.md
137
+ - Rakefile
138
+ - lib/ultradns.rb
139
+ - lib/ultradns/api/account.rb
140
+ - lib/ultradns/api/authentication.rb
141
+ - lib/ultradns/api/client_accessor.rb
142
+ - lib/ultradns/api/rrset.rb
143
+ - lib/ultradns/api/zone.rb
144
+ - lib/ultradns/client.rb
145
+ - lib/ultradns/version.rb
146
+ - test/fixtures/vcr_cassettes/test_account_related_apis.yml
147
+ - test/fixtures/vcr_cassettes/test_auth.yml
148
+ - test/fixtures/vcr_cassettes/test_auth_failure.yml
149
+ - test/fixtures/vcr_cassettes/test_basic_client_apis.yml
150
+ - test/fixtures/vcr_cassettes/test_tasks_list.yml
151
+ - test/fixtures/vcr_cassettes/test_zone_apis.yml
152
+ - test/fixtures/vcr_cassettes/test_zone_rrsets_apis.yml
153
+ - test/test_authentication.rb
154
+ - test/test_client_api.rb
155
+ - test/test_helper.rb
156
+ - ultradns-sdk.gemspec
157
+ homepage: ''
158
+ licenses:
159
+ - Apache 2.0
160
+ metadata: {}
161
+ post_install_message:
162
+ rdoc_options: []
163
+ require_paths:
164
+ - lib
165
+ required_ruby_version: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - ">="
168
+ - !ruby/object:Gem::Version
169
+ version: '0'
170
+ required_rubygems_version: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ requirements: []
176
+ rubyforge_project:
177
+ rubygems_version: 2.2.2
178
+ signing_key:
179
+ specification_version: 4
180
+ summary: UltraDNS SDK for manipulating zones managed by UltraDNS
181
+ test_files:
182
+ - test/fixtures/vcr_cassettes/test_account_related_apis.yml
183
+ - test/fixtures/vcr_cassettes/test_auth.yml
184
+ - test/fixtures/vcr_cassettes/test_auth_failure.yml
185
+ - test/fixtures/vcr_cassettes/test_basic_client_apis.yml
186
+ - test/fixtures/vcr_cassettes/test_tasks_list.yml
187
+ - test/fixtures/vcr_cassettes/test_zone_apis.yml
188
+ - test/fixtures/vcr_cassettes/test_zone_rrsets_apis.yml
189
+ - test/test_authentication.rb
190
+ - test/test_client_api.rb
191
+ - test/test_helper.rb