vmware-vra 3.0.0 → 3.0.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/vra/client.rb +16 -6
- data/lib/vra/version.rb +1 -1
- data/spec/client_spec.rb +18 -4
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 95e805c8c8d6fd5228962ffa907ce07409b60022e29166ba970194e0aa61cc42
         | 
| 4 | 
            +
              data.tar.gz: 49beb545bf435a61aefccf06daa25629ccd991363dc9ca7546e3a15996cca362
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: de450415be0060fb3aef5d796e407bf9fedfb79b0f83a003d702073ee7aaa06508a5758191916d4c522c42348d166c01c23f8671221c2b8cd66b5e4b839177e7
         | 
| 7 | 
            +
              data.tar.gz: ade68fa3e927d199c2c263bd1fcc918c21ea8c9aa52703ab74092461e9719c442294064c1410fc890c27d90908be089d21340141c11814db04cbccf3d1e4710a
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,4 +1,8 @@ | |
| 1 1 | 
             
            # Change Log
         | 
| 2 | 
            +
            ## [3.0.1](https://github.com/chef-partners/vmware-vra-gem/tree/v3.0.1) (2022-01-25)
         | 
| 3 | 
            +
            [Full Changelog](https://github.com/chef-partners/vmware-vra-gem/compare/v3.0.0...v3.0.1)
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            - Fix access token workflow to work with VRA8
         | 
| 2 6 |  | 
| 3 7 | 
             
            ## [3.0.0](https://github.com/chef-partners/vmware-vra-gem/tree/v3.0.0) (2022-01-18)
         | 
| 4 8 | 
             
            [Full Changelog](https://github.com/chef-partners/vmware-vra-gem/compare/v2.7.2...v3.0.0)
         | 
    
        data/lib/vra/client.rb
    CHANGED
    
    | @@ -23,7 +23,8 @@ require 'vra/http' | |
| 23 23 |  | 
| 24 24 | 
             
            module Vra
         | 
| 25 25 | 
             
              class Client
         | 
| 26 | 
            -
                 | 
| 26 | 
            +
                REFRESH_TOKEN_URL = '/csp/gateway/am/api/login?access_token'
         | 
| 27 | 
            +
                ACCESS_TOKEN_URL = '/iaas/api/login'
         | 
| 27 28 | 
             
                ROLES_URL = '/csp/gateway/am/api/loggedin/user/orgs'
         | 
| 28 29 |  | 
| 29 30 | 
             
                attr_accessor :page_size
         | 
| @@ -106,17 +107,26 @@ module Vra | |
| 106 107 | 
             
                end
         | 
| 107 108 |  | 
| 108 109 | 
             
                def generate_access_token
         | 
| 110 | 
            +
                  @refresh_token.value = nil
         | 
| 109 111 | 
             
                  @access_token.value = nil
         | 
| 110 112 | 
             
                  validate_client_options!
         | 
| 111 113 |  | 
| 112 | 
            -
                   | 
| 114 | 
            +
                  # VRA 8 has a two-step authentication process - This probably breaks VRA7, who knows?!?
         | 
| 115 | 
            +
                  # First step: Sending Username/Password to get a Refresh Token
         | 
| 116 | 
            +
                  refresh_response = http_post(REFRESH_TOKEN_URL,
         | 
| 113 117 | 
             
                                       FFI_Yajl::Encoder.encode(token_params),
         | 
| 114 118 | 
             
                                       :skip_auth)
         | 
| 115 | 
            -
                  raise Vra::Exception::Unauthorized, "Unable to get the  | 
| 119 | 
            +
                  raise Vra::Exception::Unauthorized, "Unable to get the refresh token: #{refresh_response.body}" unless refresh_response.success_ok?
         | 
| 116 120 |  | 
| 117 | 
            -
                   | 
| 118 | 
            -
                  @ | 
| 119 | 
            -
             | 
| 121 | 
            +
                  refresh_response_body = FFI_Yajl::Parser.parse(refresh_response.body)
         | 
| 122 | 
            +
                  @refresh_token.value = refresh_response_body['refresh_token']
         | 
| 123 | 
            +
             | 
| 124 | 
            +
                  # Second Step: Sending the refresh token to a separate endpoint to get an Access Token
         | 
| 125 | 
            +
                  access_response = http_post(ACCESS_TOKEN_URL, "{ \"refreshToken\": \"#{@refresh_token.value}\" }", :skip_auth)
         | 
| 126 | 
            +
                  raise Vra::Exception::Unauthorized, "Unable to get the access token: #{access_response.body}" unless access_response.success_ok?
         | 
| 127 | 
            +
             | 
| 128 | 
            +
                  access_response_body = FFI_Yajl::Parser.parse(access_response.body)
         | 
| 129 | 
            +
                  @access_token.value = access_response_body['token']
         | 
| 120 130 | 
             
                end
         | 
| 121 131 |  | 
| 122 132 | 
             
                def full_url(path)
         | 
    
        data/lib/vra/version.rb
    CHANGED
    
    
    
        data/spec/client_spec.rb
    CHANGED
    
    | @@ -54,7 +54,7 @@ describe Vra::Client do | |
| 54 54 | 
             
              end
         | 
| 55 55 |  | 
| 56 56 | 
             
              describe '#request_headers' do
         | 
| 57 | 
            -
                context 'when  | 
| 57 | 
            +
                context 'when access token exists' do
         | 
| 58 58 | 
             
                  it 'has an Authorization header' do
         | 
| 59 59 | 
             
                    client.access_token = '12345'
         | 
| 60 60 | 
             
                    expect(client.request_headers.key?('csp-auth-token')).to be true
         | 
| @@ -131,7 +131,7 @@ describe Vra::Client do | |
| 131 131 | 
             
                end
         | 
| 132 132 | 
             
              end
         | 
| 133 133 |  | 
| 134 | 
            -
              describe '# | 
| 134 | 
            +
              describe '#generate_access_token' do
         | 
| 135 135 | 
             
                let(:payload) do
         | 
| 136 136 | 
             
                  {
         | 
| 137 137 | 
             
                    username: 'user@corp.local',
         | 
| @@ -148,23 +148,37 @@ describe Vra::Client do | |
| 148 148 | 
             
                  }.to_json
         | 
| 149 149 | 
             
                end
         | 
| 150 150 |  | 
| 151 | 
            +
                let(:refresh_response_body) { { token: '123456' }.to_json }
         | 
| 152 | 
            +
             | 
| 151 153 | 
             
                it 'posts to the tokens API endpoint' do
         | 
| 152 154 | 
             
                  response = double('response', code: 200, body: success_response, success_ok?: true)
         | 
| 155 | 
            +
                  refresh_response = double('response', code: 200, body: refresh_response_body, success_ok?: true)
         | 
| 156 | 
            +
                  # First request to generate the refresh token
         | 
| 153 157 | 
             
                  expect(Vra::Http).to receive(:execute)
         | 
| 154 158 | 
             
                    .with(method: :post,
         | 
| 155 | 
            -
                          url: client.full_url(described_class:: | 
| 159 | 
            +
                          url: client.full_url(described_class::REFRESH_TOKEN_URL),
         | 
| 156 160 | 
             
                          payload: payload,
         | 
| 157 161 | 
             
                          headers: anything,
         | 
| 158 162 | 
             
                          verify_ssl: true)
         | 
| 159 163 | 
             
                    .and_return(response)
         | 
| 160 164 |  | 
| 165 | 
            +
                  # Second request to generate access token
         | 
| 166 | 
            +
                  expect(Vra::Http).to receive(:execute)
         | 
| 167 | 
            +
                    .with(method: :post,
         | 
| 168 | 
            +
                          url: client.full_url(described_class::ACCESS_TOKEN_URL),
         | 
| 169 | 
            +
                          payload: "{ \"refreshToken\": \"654321\" }",
         | 
| 170 | 
            +
                          headers: anything,
         | 
| 171 | 
            +
                          verify_ssl: true)
         | 
| 172 | 
            +
                    .and_return(refresh_response)
         | 
| 173 | 
            +
             | 
| 161 174 | 
             
                  client.generate_access_token
         | 
| 162 175 | 
             
                end
         | 
| 163 176 |  | 
| 164 177 | 
             
                context 'when token is generated successfully' do
         | 
| 165 178 | 
             
                  it 'sets the token' do
         | 
| 166 179 | 
             
                    response = double('response', code: 200, body: success_response, success_ok?: true)
         | 
| 167 | 
            -
                     | 
| 180 | 
            +
                    refresh_response = double('response', code: 200, body: refresh_response_body, success_ok?: true)
         | 
| 181 | 
            +
                    allow(Vra::Http).to receive(:execute).twice.and_return(response, refresh_response)
         | 
| 168 182 |  | 
| 169 183 | 
             
                    client.generate_access_token
         | 
| 170 184 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: vmware-vra
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 3.0. | 
| 4 | 
            +
              version: 3.0.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Adam Leff
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire:
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2022-01- | 
| 12 | 
            +
            date: 2022-01-25 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: ffi-yajl
         |