spec/terraform_bundler/mod/props_spec.rb in terraspace-bundler-0.4.4 vs spec/terraform_bundler/mod/props_spec.rb in terraspace-bundler-0.5.0
- old
+ new
@@ -29,6 +29,136 @@
url = props.clone_with("https://gitlab.com/tongueroo/example-module.git")
expect(url).to eq "git@gitlab.com:tongueroo/example-module.git"
end
end
+
+ # context terrafile = evaulated Terrafile DSL results in these type of options being passed to Props#build
+ context "terrafile" do
+ let(:params) do
+ {
+ :args=>["repo"],
+ :options=>{:source=>source},
+ :source=>"git::ssh://ec2-user@localhost:/home/ec2-user/environment/repo",
+ :name=>"repo",
+ :type=>"git",
+ :url=>"ssh:",
+ :subfolder=>"ec2-user@localhost:/home/ec2-user/environment/repo", :ref=>nil
+
+ }
+ end
+ context "git@github.com source" do
+ let(:source) { "git@github.com:boltops-tools/terraform-aws-s3" }
+ it "properties" do
+ result = props.build
+ expect(result).to eq(
+ {:source=>"git@github.com:boltops-tools/terraform-aws-s3",
+ :name=>"repo",
+ :type=>"git",
+ :url=>"git@github.com:boltops-tools/terraform-aws-s3",
+ :subfolder=>nil,
+ :ref=>nil}
+ )
+ expect(props.url).to eq "git@github.com:boltops-tools/terraform-aws-s3"
+ expect(props.type).to eq "git"
+ expect(props.source).to eq "git@github.com:boltops-tools/terraform-aws-s3"
+ end
+ end
+ context "https://github.com source" do
+ let(:source) { "https://github.com/boltops-tools/random_pet" }
+ it "properties" do
+ expect(props.url).to eq "https://github.com/boltops-tools/random_pet"
+ expect(props.type).to eq "git"
+ expect(props.source).to eq "https://github.com/boltops-tools/random_pet"
+ end
+ end
+ context "explicit org source" do
+ let(:source) { "boltopspro/terraform-aws-elasticache" }
+ it "properties" do
+ expect(props.url).to eq "https://github.com/boltopspro/terraform-aws-elasticache"
+ expect(props.type).to eq "git"
+ expect(props.source).to eq "boltopspro/terraform-aws-elasticache"
+ end
+ end
+ context "terraform registry source" do
+ let(:source) { "terraform-aws-modules/security-group/aws" }
+ it "properties" do
+ expect(props.url).to eq "https://github.com/terraform-aws-modules/terraform-aws-security-group"
+ expect(props.type).to eq "registry"
+ expect(props.source).to eq "terraform-aws-modules/security-group/aws"
+ end
+ end
+ context "ssh with explicit user source" do
+ let(:source) { "ssh://user@host:/path/to/repo" }
+ it "properties" do
+ result = props.build
+ expect(result).to eq(
+ {:source=>"ssh://user@host:/path/to/repo",
+ :name=>"repo",
+ :type=>"git",
+ :url=>"user@host:/path/to/repo",
+ :subfolder=>nil,
+ :ref=>nil}
+ )
+ end
+ end
+ context "ssh with implied user source" do
+ let(:source) { "ssh://host:/path/to/repo" }
+ it "properties" do
+ result = props.build
+ expect(result).to eq(
+ {:source=>"ssh://host:/path/to/repo",
+ :name=>"repo",
+ :type=>"git",
+ :url=>"host:/path/to/repo",
+ :subfolder=>nil,
+ :ref=>nil}
+ )
+ end
+ end
+
+ context "ssh 2-level folder source" do
+ let(:source) { "ssh://ec2-user@localhost:environment/repo" }
+ it "properties" do
+ result = props.build
+ expect(result).to eq(
+ {:source=>"ssh://ec2-user@localhost:environment/repo",
+ :name=>"repo",
+ :type=>"git",
+ :url=>"ec2-user@localhost:environment/repo",
+ :subfolder=>nil,
+ :ref=>nil}
+ )
+ end
+ end
+
+ context "ssh 1-level folder source" do
+ let(:source) { "ssh://ec2-user@localhost:repo" }
+ it "properties" do
+ result = props.build
+ expect(result).to eq(
+ {:source=>"ssh://ec2-user@localhost:repo",
+ :name=>"repo",
+ :type=>"git",
+ :url=>"ec2-user@localhost:repo",
+ :subfolder=>nil,
+ :ref=>nil}
+ )
+ end
+ end
+
+ context "ssh without colon supports only absolute path source" do
+ let(:source) { "ssh://ec2-user@localhost/home/ec2-user/repo" }
+ it "properties" do
+ result = props.build
+ expect(result).to eq(
+ {:source=>"ssh://ec2-user@localhost/home/ec2-user/repo",
+ :name=>"repo",
+ :type=>"git",
+ :url=>"ssh://ec2-user@localhost/home/ec2-user/repo",
+ :subfolder=>nil,
+ :ref=>nil}
+ )
+ end
+ end
+ end
end