]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/openstacklib/spec/unit/provider/openstack/credentials_spec.rb
try with modules from master
[dsa-puppet.git] / 3rdparty / modules / openstacklib / spec / unit / provider / openstack / credentials_spec.rb
diff --git a/3rdparty/modules/openstacklib/spec/unit/provider/openstack/credentials_spec.rb b/3rdparty/modules/openstacklib/spec/unit/provider/openstack/credentials_spec.rb
new file mode 100644 (file)
index 0000000..aa81ec2
--- /dev/null
@@ -0,0 +1,158 @@
+require 'puppet'
+require 'spec_helper'
+require 'puppet/provider/openstack'
+require 'puppet/provider/openstack/credentials'
+
+
+describe Puppet::Provider::Openstack::Credentials do
+
+  let(:creds) do
+    creds = Puppet::Provider::Openstack::CredentialsV2_0.new
+  end
+
+  describe "#set with valid value" do
+    it 'works with valid value' do
+      expect(creds.class.defined?('auth_url')).to be_truthy
+      creds.set('auth_url', 'http://localhost:5000/v2.0')
+      expect(creds.auth_url).to eq('http://localhost:5000/v2.0')
+    end
+  end
+
+  describe "#set with invalid value" do
+    it 'works with invalid value' do
+      expect(creds.class.defined?('foo')).to be_falsey
+      creds.set('foo', 'junk')
+      expect(creds.respond_to?(:foo)).to be_falsey
+      expect(creds.instance_variable_defined?(:@foo)).to be_falsey
+      expect { creds.foo }.to raise_error(NoMethodError, /undefined method/)
+    end
+  end
+
+  describe '#service_token_set?' do
+    context "with service credentials" do
+      it 'is successful' do
+        creds.token = 'token'
+        creds.url = 'url'
+        expect(creds.service_token_set?).to be_truthy
+        expect(creds.user_password_set?).to be_falsey
+      end
+
+      it 'fails' do
+        creds.token = 'token'
+        expect(creds.service_token_set?).to be_falsey
+        expect(creds.user_password_set?).to be_falsey
+      end
+    end
+  end
+
+  describe '#password_set?' do
+    context "with user credentials" do
+      it 'is successful' do
+        creds.auth_url = 'auth_url'
+        creds.password = 'password'
+        creds.project_name = 'project_name'
+        creds.username = 'username'
+        expect(creds.user_password_set?).to be_truthy
+        expect(creds.service_token_set?).to be_falsey
+      end
+
+      it 'fails' do
+        creds.auth_url = 'auth_url'
+        creds.password = 'password'
+        creds.project_name = 'project_name'
+        expect(creds.user_password_set?).to be_falsey
+        expect(creds.service_token_set?).to be_falsey
+      end
+    end
+  end
+
+  describe '#set?' do
+    context "without any credential" do
+      it 'fails' do
+        expect(creds.set?).to be_falsey
+      end
+    end
+  end
+
+  describe '#version' do
+    it 'is version 2' do
+      expect(creds.version).to eq('2.0')
+    end
+  end
+
+  describe '#unset' do
+    context "with all instance variables set" do
+      it 'resets all but the identity_api_version' do
+        creds.auth_url = 'auth_url'
+        creds.password = 'password'
+        creds.project_name = 'project_name'
+        creds.username = 'username'
+        creds.token = 'token'
+        creds.url = 'url'
+        creds.identity_api_version = 'identity_api_version'
+        creds.unset
+        expect(creds.auth_url).to eq('')
+        expect(creds.password).to eq('')
+        expect(creds.project_name).to eq('')
+        expect(creds.username).to eq('')
+        expect(creds.token).to eq('')
+        expect(creds.url).to eq('')
+        expect(creds.identity_api_version).to eq('identity_api_version')
+        newcreds = Puppet::Provider::Openstack::CredentialsV3.new
+        expect(newcreds.identity_api_version).to eq('3')
+      end
+    end
+  end
+
+  describe '#to_env' do
+    context "with an exhaustive data set" do
+      it 'successfully returns content' do
+        creds.auth_url = 'auth_url'
+        creds.password = 'password'
+        creds.project_name = 'project_name'
+        creds.username = 'username'
+        creds.token = 'token'
+        creds.url = 'url'
+        creds.identity_api_version = 'identity_api_version'
+        expect(creds.to_env).to eq({
+          'OS_USERNAME'             => 'username',
+          'OS_PASSWORD'             => 'password',
+          'OS_PROJECT_NAME'         => 'project_name',
+          'OS_AUTH_URL'             => 'auth_url',
+          'OS_TOKEN'                => 'token',
+          'OS_URL'                  => 'url',
+          'OS_IDENTITY_API_VERSION' => 'identity_api_version'
+        })
+      end
+    end
+  end
+
+  describe 'using v3' do
+    let(:creds) do
+      creds = Puppet::Provider::Openstack::CredentialsV3.new
+    end
+    describe 'with v3' do
+      it 'uses v3 identity api' do
+        creds.identity_api_version == '3'
+      end
+    end
+    describe '#password_set? with username and project_name' do
+      it 'is successful' do
+        creds.auth_url = 'auth_url'
+        creds.password = 'password'
+        creds.project_name = 'project_name'
+        creds.username = 'username'
+        expect(creds.user_password_set?).to be_truthy
+      end
+    end
+    describe '#password_set? with user_id and project_id' do
+      it 'is successful' do
+        creds.auth_url = 'auth_url'
+        creds.password = 'password'
+        creds.project_id = 'projid'
+        creds.user_id = 'userid'
+        expect(creds.user_password_set?).to be_truthy
+      end
+    end
+  end
+end