versionone_sdk 0.1.2 → 0.2.0

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: 0c15907c8f53860b4e6e271b5df502d75482d8c0
4
- data.tar.gz: c6a1c6c0e857d6201e1e4c485520c1215be6ae11
3
+ metadata.gz: 35eb4c49dfa7e75b424bf730097f077bbe9a420c
4
+ data.tar.gz: e3f477f0f83e0b3fb3aa885c7c2dabcc67c8b405
5
5
  SHA512:
6
- metadata.gz: 9b326cd59f5114a1a25d68f1398701362c189e1a54ace9e3054ef6e4018c63d12a4f26a7a3c594b9c6f99e10ba7f818aa3d12909f1f7a74c1ef0ad0f678b6bdd
7
- data.tar.gz: ec8125c609f378a31e5f8dd74a483507723ab5b42670ea038d4ef64dd9ac9d636c3bb7df74386e966b1c9fc1a6b6ec87731427e9978de98cb3ac7da7fdf0cfb3
6
+ metadata.gz: 2e6162a198d02b40475e198fb22a4a8b864040d34b9c3389b3ed1def2d5379c7ba5198608635c8ddd66f6c78b62e6b106fe95bd6e6cc0cde5ea91540ebd72fd9
7
+ data.tar.gz: bc8d46678499d305630526f921cf9084a4cc05d88ccbaa8b5949811a356e4d391f5fd8257965575e00932c8df05c2294af386bad53bdf3650fa7b4ae115d03c5
@@ -1,5 +1,11 @@
1
1
  CHANGELOG
2
2
  ---------
3
+ - **2015-02-16**: 0.2.0
4
+ - Add Access Token Authentication handling from pccasto. More info at: https://community.versionone.com/Developers/Developer-Library/Documentation/API_Authentication/Access_Token_Authentication
5
+ - Update client's default protocol, hostname and port to use constants.
6
+ - Fix Coveralls code coverage support.
7
+ - **2016-02-05**: 0.1.2
8
+ - Update `VersiononeSdk::Asset` to update call to `JsonDoc::Document`
3
9
  - **2015-09-14**: 0.1.1
4
10
  - Update `README.md`
5
11
  - Add Travis CI, Code Climate, Coveralls support
@@ -14,4 +20,4 @@ CHANGELOG
14
20
  - **2014-03-17**: 0.0.2
15
21
  - Add `VersiononeSdk::Asset` object to support value inflation, starting with `AssetState.Name`
16
22
  - **2014-03-16**: 0.0.1
17
- - Initial release
23
+ - Initial release
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source ENV['GEM_SOURCE'] || "https://rubygems.org"
1
+ source ENV['GEM_SOURCE'] || 'https://rubygems.org'
2
2
 
3
3
  gem 'coveralls'
4
4
  gem 'faraday', '~> 0.9.0'
data/README.md CHANGED
@@ -23,6 +23,8 @@ It currently offers the following capabilities:
23
23
  2. Ability to query Assets transparently using Asset OID Tokens (e.g. `Story:1`) or Asset Numbers (e.g. `B-1`).
24
24
  3. Ability to update Assets using Ruby without needing to manually create XML.
25
25
 
26
+ Note: This SDK doesn't currently support NTLM authentication used with on-premise VersionOne deployments. An approach for this is to use [`httpclient`](https://rubygems.org/gems/httpclient) and [`rubyntlm`](https://rubygems.org/gems/rubyntlm).
27
+
26
28
  ## Installation
27
29
 
28
30
  ### Via Bundler
@@ -47,6 +49,7 @@ This gem uses `nokogiri` which requires Ruby >= 1.9.2.
47
49
  ```ruby
48
50
  require 'versionone_sdk'
49
51
 
52
+ # Authorizing using Basic Authentication
50
53
  params = {
51
54
  hostname: 'www1.v1host.com',
52
55
  instance: 'myinstance',
@@ -55,9 +58,18 @@ params = {
55
58
  port: 443,
56
59
  protocol: 'https'
57
60
  }
61
+ v1client = VersiononeSdk::Client.new params
62
+
63
+ # Authorizing using Access Token Authentication
64
+ params = {
65
+ hostname: 'www1.v1host.com',
66
+ instance: 'myinstance',
67
+ access_token: 'myaccesstoken',
68
+ port: 443,
69
+ protocol: 'https'
70
+ }
71
+ v1client = VersiononeSdk::Client.new params
58
72
 
59
- v1client = VersiononeSdk::Client.new(params)
60
-
61
73
  # Retrieve an array of VersiononeSdk::Asset objects
62
74
  assets = v1client.getAssets('Scope')
63
75
 
@@ -129,12 +141,24 @@ Project Repo
129
141
 
130
142
  VersionOne API Documentation
131
143
 
132
- * http://community.versionone.com/Developers/Developer-Library/Documentation/API
144
+ * http://community.versionone.com/Developers/Developer-Library/Documentation
133
145
 
134
146
  VersionOne API Documentation for Updating an Asset
135
147
 
136
148
  * https://community.versionone.com/Developers/Developer-Library/Recipes/Update_an_Asset
137
149
 
150
+ VersionOne Developer Google Group
151
+
152
+ * https://groups.google.com/forum/#!forum/versionone-dev
153
+
154
+ ## Contributing
155
+
156
+ 1. Fork it ( http://github.com/grokify/versionone-sdk-ruby/fork )
157
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
158
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
159
+ 4. Push to the branch (`git push origin my-new-feature`)
160
+ 5. Create new Pull Request
161
+
138
162
  ## Copyright and License
139
163
 
140
164
  VersiononeSdk © 2014-2016 by [John Wang](mailto:johncwang@gmail.com).
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require 'rake'
2
2
  require 'rake/testtask'
3
3
 
4
4
  desc 'Default: run unit tests.'
5
- task :default => :test
5
+ task default: :test
6
6
 
7
7
  desc 'Test the library.'
8
8
  Rake::TestTask.new do |t|
@@ -14,6 +14,6 @@ end
14
14
  desc 'Generate YARD documentation.'
15
15
  task :gendoc do
16
16
  #puts 'yard doc generation disabled until JRuby build native extensions for redcarpet or yard removes the dependency.'
17
- system "yardoc"
18
- system "yard stats --list-undoc"
19
- end
17
+ system 'yardoc'
18
+ system 'yard stats --list-undoc'
19
+ end
@@ -4,124 +4,128 @@ require 'versionone_sdk/parser_xml_assets'
4
4
 
5
5
  module VersiononeSdk
6
6
  class Client
7
+ DEFAULT_PROTOCOL = 'https'
8
+ DEFAULT_HOSTNAME = 'localhost'
9
+ DEFAULT_PORT = 443
10
+
7
11
  attr_accessor :oFaraday
8
12
  attr_accessor :sInstance
9
13
 
10
- def initialize(dOptions={})
11
- iPort = iPort.to_i if iPort.is_a?(String)
12
- @sProtocol = dOptions.key?(:protocol) && dOptions[:protocol] \
13
- ? dOptions[:protocol] : 'https'
14
- @sHostname = dOptions.key?(:hostname) && dOptions[:hostname] \
15
- ? dOptions[:hostname] : 'localhost'
16
- @iPort = dOptions.key?(:port) && dOptions[:port] \
17
- ? dOptions[:port].to_i : 443
18
- sUsername = dOptions.key?(:username) ? dOptions[:username] : ''
19
- sPassword = dOptions.key?(:password) ? dOptions[:password] : ''
20
- @sInstance = dOptions.key?(:instance) ? dOptions[:instance] : ''
21
- @dTypePrefix = { 'B' => 'Story', 'E' => 'Epic' }
22
- @sUrl = buildUrl(@sProtocol,@sHostname,@iPort)
14
+ def initialize(opts = {})
15
+ @sProtocol = opts[:protocol] || DEFAULT_PROTOCOL
16
+ @sHostname = opts[:hostname] || DEFAULT_HOSTNAME
17
+ @iPort = opts.key?(:port) && opts[:port] \
18
+ ? opts[:port].to_i : DEFAULT_PORT
19
+ sUsername = opts[:username] || ''
20
+ sPassword = opts[:password] || ''
21
+ # VersionOne provides a mechanism for generating an access token
22
+ sAccessToken = opts[:access_token] || ''
23
+ @sInstance = opts[:instance] || ''
24
+ @dTypePrefix = {'B' => 'Story', 'E' => 'Epic'}
25
+ @sUrl = buildUrl(@sProtocol, @sHostname, @iPort)
23
26
  @oFaraday = Faraday::Connection.new url: @sUrl
24
- @oFaraday.basic_auth(sUsername, sPassword)
25
- @oUpdate = VersiononeSdk::Update.new(self)
27
+ @oFaraday.ssl.verify = opts[:ssl_verify].to_s.match(/false/i) \
28
+ ? false : true
29
+ if sAccessToken.empty?
30
+ @oFaraday.basic_auth(sUsername, sPassword)
31
+ else
32
+ # could also patch Faraday to have a method similar to basic_auth
33
+ @oFaraday.headers['Authorization'] = "Bearer #{sAccessToken}"
34
+ end
35
+ @oUpdate = VersiononeSdk::Update.new self
26
36
  end
27
37
 
28
- def getAsset(xAssetId1=nil,xAssetId2=nil)
29
- if !xAssetId1.nil?
30
- xAssetId1.strip!
31
-
32
- if xAssetId1 =~ /^([^:]+):([0-9]+)$/
33
- sAssetType = $1
34
- sAssetOid = $2.to_i
35
- return self.getAssetForTypeAndOid( sAssetType, sAssetOid )
36
-
37
- elsif xAssetId1 =~ /^([a-zA-Z])-[0-9]+$/
38
- sAssetTypeAbbr = $1.upcase
39
- sAssetType = @dTypePrefix.key?( sAssetTypeAbbr ) \
40
- ? @dTypePrefix[ sAssetTypeAbbr ] : ''
41
- xAssetId1.upcase!
42
- return self.getAssetForTypeAndNumber( sAssetType, xAssetId1 )
43
-
44
- elsif !xAssetId2.nil?
45
- if xAssetId2.is_a?(String) && xAssetId2 =~ /^[0-9]+$/
46
- xAssetId2 = xAssetId2.to_i
47
- end
38
+ def getAsset(xAssetId1, xAssetId2 = nil)
39
+ xAssetId1.strip!
48
40
 
49
- if xAssetId2.is_a?(Integer)
41
+ if xAssetId1 =~ /^([^:]+):([0-9]+)$/
42
+ sAssetType = $1
43
+ sAssetOid = $2.to_i
44
+ return self.getAssetForTypeAndOid(sAssetType, sAssetOid)
50
45
 
51
- if xAssetId1 =~ /^[a-zA-Z]$/
52
- xAssetId1.upcase!
53
- sAssetTypeAbbr = xAssetId1
54
- sAssetType = @dTypePrefix.key?( sAssetTypeAbbr ) \
55
- ? @dTypePrefix[ sAssetTypeAbbr ] : ''
56
- sAssetNumber = xAssetId1 + '-' + xAssetId2.to_s
57
- sAssetNumber.upcase!
58
- return self.getAssetForTypeAndNumber( sAssetType, sAssetNumber )
59
- elsif xAssetId1 =~ /^[a-zA-Z].+$/
60
- return self.getAssetForTypeAndOid( xAssetId1, xAssetId2 )
61
- end
46
+ elsif xAssetId1 =~ /^([a-zA-Z])-[0-9]+$/
47
+ sAssetTypeAbbr = $1.upcase
48
+ sAssetType = @dTypePrefix.key?(sAssetTypeAbbr) \
49
+ ? @dTypePrefix[ sAssetTypeAbbr ] : ''
50
+ xAssetId1.upcase!
51
+ return self.getAssetForTypeAndNumber(sAssetType, xAssetId1)
62
52
 
63
- end
53
+ elsif !xAssetId2.nil?
54
+ if xAssetId2.is_a?(String) && xAssetId2 =~ /^[0-9]+$/
55
+ xAssetId2 = xAssetId2.to_i
56
+ end
64
57
 
58
+ if xAssetId2.is_a?(Integer)
59
+
60
+ if xAssetId1 =~ /^[a-zA-Z]$/
61
+ xAssetId1.upcase!
62
+ sAssetTypeAbbr = xAssetId1
63
+ sAssetType = @dTypePrefix.key?(sAssetTypeAbbr) \
64
+ ? @dTypePrefix[ sAssetTypeAbbr ] : ''
65
+ sAssetNumber = xAssetId1 + '-' + xAssetId2.to_s
66
+ sAssetNumber.upcase!
67
+ return self.getAssetForTypeAndNumber(sAssetType, sAssetNumber)
68
+ elsif xAssetId1 =~ /^[a-zA-Z].+$/
69
+ return self.getAssetForTypeAndOid(xAssetId1, xAssetId2)
70
+ end
65
71
  end
66
- else
67
- raise RuntimeError, 'E_NO_ASSET_ID'
68
72
  end
73
+
69
74
  raise RuntimeError, "E_UNKNOWN_ASSET_ID [#{xAssetId1}][#{xAssetId2.to_s}]"
70
75
  end
71
76
 
72
- def getAssetForTypeAndOid(sAssetType=nil,sAssetOid=nil)
73
- sUrl = self.getUrlForAssets( sAssetType, sAssetOid )
74
- puts(sUrl)
75
- oRes = @oFaraday.get sUrl
77
+ def getAssetForTypeAndOid(sAssetType = nil, sAssetOid = nil)
78
+ sUrl = self.getUrlForAssets( sAssetType, sAssetOid )
79
+ oRes = @oFaraday.get sUrl
76
80
  oParser = VersiononeSdk::ParserXmlAssets.new({:url => @sUrl})
77
- aDoc = oParser.getDocForAssetXml( oRes.body )
81
+ aDoc = oParser.getDocForAssetXml( oRes.body )
78
82
  end
79
83
 
80
- def getAssetForTypeAndNumber(sAssetType=nil,sAssetNumber=nil)
81
- sUrl = self.getUrlForAssetTypeAndNumber( sAssetType, sAssetNumber )
82
- oRes = @oFaraday.get sUrl
84
+ def getAssetForTypeAndNumber(sAssetType = nil, sAssetNumber = nil)
85
+ sUrl = self.getUrlForAssetTypeAndNumber( sAssetType, sAssetNumber )
86
+ oRes = @oFaraday.get sUrl
83
87
  oParser = VersiononeSdk::ParserXmlAssets.new({:url => @sUrl})
84
- aDocs = oParser.getDocsForAssetsXml( oRes.body )
88
+ aDocs = oParser.getDocsForAssetsXml( oRes.body )
85
89
  return aDocs[0]
86
90
  end
87
91
 
88
- def getAssets(sAssetType=nil,xIds=nil)
89
- oRes = self.getAssetsXml(sAssetType,xIds)
92
+ def getAssets(sAssetType = nil, xIds = nil)
93
+ oRes = self.getAssetsXml(sAssetType,xIds)
90
94
  oParser = VersiononeSdk::ParserXmlAssets.new({:url => @sUrl})
91
- aDocs = oParser.getDocsForAssetsXml( oRes.body )
95
+ aDocs = oParser.getDocsForAssetsXml( oRes.body )
92
96
  return aDocs
93
97
  end
94
98
 
95
- def getAssetsXml(sAssetType=nil,xIds=nil)
99
+ def getAssetsXml(sAssetType = nil, xIds = nil)
96
100
  sUrl = self.getUrlForAssets(sAssetType)
97
101
  oRes = @oFaraday.get sUrl
98
102
  return oRes
99
103
  end
100
104
 
101
- def getUrlForAssetTypeAndNumber(sAssetType=nil,sAssetNumber=nil)
105
+ def getUrlForAssetTypeAndNumber(sAssetType = nil, sAssetNumber = nil)
102
106
  aUrl = [ @sUrl, @sInstance, 'rest-1.v1/Data',sAssetType + %Q!?where=Number="#{sAssetNumber}"!]
103
107
  sUrl = aUrl.join('/')
104
108
  return sUrl
105
109
  end
106
110
 
107
- def getUrlForAssets(sAssetType=nil,sAssetOid=nil)
108
- aUrl = [ @sUrl, @sInstance, 'rest-1.v1/Data',sAssetType]
111
+ def getUrlForAssets(sAssetType = nil, sAssetOid = nil)
112
+ aUrl = [@sUrl, @sInstance, 'rest-1.v1/Data',sAssetType]
109
113
  if sAssetOid.is_a?(Integer)
110
- aUrl.push( sAssetOid )
114
+ aUrl.push sAssetOid
111
115
  elsif sAssetOid.kind_of?(String) && sAssetOid =~ /^[0-9]+$/
112
- aUrl.push( sAssetOid )
116
+ aUrl.push sAssetOid
113
117
  end
114
118
  sUrl = aUrl.join('/')
115
119
  return sUrl
116
120
  end
117
121
 
118
122
  def updateAsset(sAssetType=nil,sAssetOid=nil,sName=nil,xxValues=nil,yTagType=nil)
119
- return @oUpdate.updateAsset(sAssetType,sAssetOid,sName,xxValues,yTagType)
123
+ return @oUpdate.updateAsset(sAssetType, sAssetOid, sName, xxValues, yTagType)
120
124
  end
121
125
 
122
126
  private
123
127
 
124
- def buildUrl(sProtocol='http',sHostname='localhost',iPort=80)
128
+ def buildUrl(sProtocol = DEFAULT_PROTOCOL, sHostname = DEFAULT_HOSTNAME, iPort = DEFAULT_PORT)
125
129
  if sHostname.nil?
126
130
  sHostname = 'localhost'
127
131
  elsif sHostname.is_a?(String)
@@ -139,9 +143,9 @@ module VersiononeSdk
139
143
  elsif ! iPort.kind_of?(Integer)
140
144
  raise ArgumentError, 'E_PORT_IS_NOT_AN_INTEGER'
141
145
  end
142
- sBaseUrl = "#{sProtocol}://#{sHostname}"
146
+ sBaseUrl = "#{sProtocol}://#{sHostname}"
143
147
  sBaseUrl.sub!(/\/+\s*$/,'')
144
- sBaseUrl += ':' + iPort.to_s if iPort != 80
148
+ sBaseUrl += ':' + iPort.to_s if iPort != 80
145
149
  return sBaseUrl
146
150
  end
147
151
  end
@@ -14,9 +14,9 @@ module VersiononeSdk
14
14
  return []
15
15
  end
16
16
  def getDocsForAssetsXml(xAssets=nil)
17
- oXml = Nokogiri::XML::Document.parse(xAssets)
17
+ oXml = Nokogiri::XML::Document.parse(xAssets)
18
18
  oBlock = oXml.xpath("//Assets/Asset")
19
- aDocs = []
19
+ aDocs = []
20
20
  oBlock.map do |oNodeAsset|
21
21
  oAsset = self.getJsondocForXmlAssetNode( oNodeAsset )
22
22
  unless oAsset.nil?
@@ -26,7 +26,7 @@ module VersiononeSdk
26
26
  return aDocs
27
27
  end
28
28
  def getDocForAssetXml(xAsset=nil)
29
- oXml = Nokogiri::XML::Document.parse(xAsset)
29
+ oXml = Nokogiri::XML::Document.parse(xAsset)
30
30
  oAsset = self.getJsondocForXmlAssetNode( oXml.root )
31
31
  return oAsset
32
32
  end
@@ -58,7 +58,7 @@ module VersiononeSdk
58
58
  oNodeAsset.children.each do |oNodeChild|
59
59
  if oNodeChild.name == 'Attribute' || oNodeChild.name == 'Relation'
60
60
  if oNodeChild.attribute('name')
61
- yPropKey = oNodeChild.attribute('name').to_s.to_sym
61
+ yPropKey = oNodeChild.attribute('name').to_s.to_sym
62
62
  xxPropVal = getAssetNodeChildPropVal( oNodeChild )
63
63
  oAsset.setProp(yPropKey,xxPropVal)
64
64
  end
@@ -90,9 +90,9 @@ module VersiononeSdk
90
90
  xxPropVal = nil
91
91
  end
92
92
  else
93
- xxPropVal = oNodeChild.text
93
+ xxPropVal = oNodeChild.text
94
94
  end
95
- xxPropVal = nil if xxPropVal == ''
95
+ xxPropVal = nil if xxPropVal == ''
96
96
  return xxPropVal
97
97
  end
98
98
  end
@@ -3,8 +3,8 @@ require 'nokogiri'
3
3
  module VersiononeSdk
4
4
  class Update
5
5
  def initialize(oClient=nil)
6
- @oClient = oClient
7
- @dTagTypes = {:simple_attribute=>1,:single_relationship=>1,:multi_relationship=>1}
6
+ @oClient = oClient
7
+ @dTagTypes = {simple_attribute: 1, single_relationship: 1, multi_relationship: 1}
8
8
  @sRelationships = 'BuildProjects,Owner,Parent,Schedule,Scheme,SecurityScope,Status,TestSuite'
9
9
  @dRelationships = Hash[@sRelationships.split(',').collect {|v| [v,1]}]
10
10
  end
@@ -18,9 +18,7 @@ module VersiononeSdk
18
18
  # +xxValues+:: values to be updated which can be a variety of formats.
19
19
  # +yTagType+:: A optional symbol to identify the type of attribute, e.g.
20
20
  # :simple_attribute, :single_relationship, or :multi_relationship
21
-
22
21
  def updateAsset(sAssetType=nil,sAssetOid=nil,sName=nil,xxValues=nil,yTagType=nil)
23
-
24
22
  aValues = normalizeValues(xxValues)
25
23
  # Validate Tag Type
26
24
  yTagType = yTagType.to_sym if yTagType.is_a?(String)
@@ -76,14 +74,14 @@ module VersiononeSdk
76
74
  aValues = []
77
75
 
78
76
  if xxValues.is_a?(String)
79
- aValues = [{:value => xxValues,:act=>'set'}]
77
+ aValues = [{value: xxValues, act: 'set'}]
80
78
  elsif xxValues.is_a?(Hash)
81
79
  aValues = [xxValues]
82
80
  elsif xxValues.is_a?(Array)
83
81
  xxValues.each do |xxSubValue|
84
82
  if xxSubValue.is_a?(String)
85
83
  sAct = xxValues.length > 1 ? 'add' : 'set'
86
- aValues.push({:value=>xxSubValue,:act=>sAct})
84
+ aValues.push({value: xxSubValue, act: sAct})
87
85
  elsif xxSubValue.is_a?(Hash)
88
86
  aValues.push(xxSubValue)
89
87
  end
@@ -103,7 +101,7 @@ module VersiononeSdk
103
101
  ? aValues[0][:value] : nil
104
102
  oBuilder = Nokogiri::XML::Builder.new do |xml|
105
103
  xml.Asset {
106
- xml.Attribute(sValue, :name => sName, :act => 'set')
104
+ xml.Attribute(sValue, name: sName, act: 'set')
107
105
  }
108
106
  end
109
107
  return oBuilder.to_xml
@@ -114,11 +112,11 @@ module VersiononeSdk
114
112
  ? aValues[0][:value] : nil
115
113
  oBuilder = sValue.nil? \
116
114
  ? Nokogiri::XML::Builder.new { |xml| xml.Asset { \
117
- xml.Relation(:name=>sName,:act=>'set')
115
+ xml.Relation(name: sName, act: 'set')
118
116
  } }
119
117
  : Nokogiri::XML::Builder.new { |xml| xml.Asset { \
120
- xml.Relation(:name=>sName,:act=>'set') {
121
- xml.Asset(:idref=>sValue)
118
+ xml.Relation(name: sName, act: 'set') {
119
+ xml.Asset(idref: sValue)
122
120
  }
123
121
  } }
124
122
  return oBuilder.to_xml
@@ -127,12 +125,12 @@ module VersiononeSdk
127
125
  def getXmlBodyForMultiRelationship(sName=nil,aValues=[])
128
126
  oBuilder = aValues.length == 0 \
129
127
  ? Nokogiri::XML::Builder.new { |xml| xml.Asset { \
130
- xml.Relation(:name=>sName,:act=>'set')
128
+ xml.Relation(name: sName, act: 'set')
131
129
  } }
132
130
  : Nokogiri::XML::Builder.new { |xml| xml.Asset { \
133
- xml.Relation(:name=>sName) {
131
+ xml.Relation(name: sName) {
134
132
  aValues.each do |dValue|
135
- xml.Asset(:idref=>dValue[:value],:act=>dValue[:act])
133
+ xml.Asset(idref: dValue[:value], act: dValue[:act])
136
134
  end
137
135
  }
138
136
  } }
@@ -1,3 +1,3 @@
1
1
  module VersiononeSdk
2
- VERSION = '0.1.2'
2
+ VERSION = '0.2.0'
3
3
  end
@@ -0,0 +1,5 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
4
+ require 'test/unit'
5
+ require 'versionone_sdk'
@@ -1,7 +1,4 @@
1
- require 'test/unit'
2
- require 'versionone_sdk'
3
-
4
- require 'pp'
1
+ require './test/test_base.rb'
5
2
 
6
3
  class VersiononeSdkTest < Test::Unit::TestCase
7
4
  def testSetup
@@ -23,4 +20,24 @@ class VersiononeSdkTest < Test::Unit::TestCase
23
20
 
24
21
  assert_equal 'Closed', oAsset.getProp(:'AssetState.Name')
25
22
  end
23
+
24
+ def testClient
25
+ oClient = VersiononeSdk::Client.new(instance: 'Test')
26
+ assert_equal 'https://localhost:443/Test/rest-1.v1/Data/',
27
+ oClient.getUrlForAssets
28
+ assert oClient.oFaraday.ssl.verify
29
+
30
+ oClient = VersiononeSdk::Client.new(instance: 'Test', ssl_verify: false)
31
+ assert !(oClient.oFaraday.ssl.verify)
32
+
33
+ oClient = VersiononeSdk::Client.new(protocol: 'http', user: 'user',
34
+ password: 'pass', port: 80, access_token: '', instance: 'Test')
35
+ assert_equal 'http://localhost/Test/rest-1.v1/Data/', oClient.getUrlForAssets
36
+ assert_match /\ABasic /, oClient.oFaraday.headers['Authorization']
37
+
38
+ sAccessToken = 'some_string_generated_from_version_one'
39
+ oClient = VersiononeSdk::Client.new(protocol: 'https', port: 443,
40
+ access_token: sAccessToken, instance: Test)
41
+ assert_equal "Bearer #{sAccessToken}", oClient.oFaraday.headers['Authorization']
42
+ end
26
43
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: versionone_sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Wang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-05 00:00:00.000000000 Z
11
+ date: 2016-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -87,6 +87,7 @@ files:
87
87
  - lib/versionone_sdk/parser_xml_assets.rb
88
88
  - lib/versionone_sdk/update.rb
89
89
  - lib/versionone_sdk/version.rb
90
+ - test/test_base.rb
90
91
  - test/test_setup.rb
91
92
  homepage: http://johnwang.com/
92
93
  licenses: