vagrant-s3auth-mfa 1.4.3 → 1.5.0
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 +11 -2
- data/lib/vagrant-s3auth-mfa/util.rb +1 -1
- data/lib/vagrant-s3auth-mfa/version.rb +1 -1
- data/vagrant-s3auth-mfa.gemspec +2 -2
- metadata +7 -17
- data/Rakefile +0 -15
- data/TESTING.md +0 -70
- data/test/box/minimal +0 -13
- data/test/box/minimal.box +0 -0
- data/test/box/public-minimal +0 -13
- data/test/box/public-minimal.box +0 -1
- data/test/cleanup.rb +0 -23
- data/test/run.bats +0 -147
- data/test/setup.rb +0 -34
- data/test/support.rb +0 -82
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 385cfd66de798618110817e177bfcb948d4169489f7e633ce13ed0efb70f6e46
|
4
|
+
data.tar.gz: 5314ea54b96109d51c63d4de07a8dd302555e84d2b3650c48a7aa6cd0e2dce0f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86f059873423512aecb5db98680b77af9306b166709b1488bb82896a53d806fe3e25d834b4a24a3a6bfc963e44716c13ac00a517f6112c550ac1546545e71b1b
|
7
|
+
data.tar.gz: 7e9e6605219a684a3ad93f241c783260dd76ee9334cf1dd07b62fa697051a04731adf2a4c0ac71281e47453559e9d6baeea96f12a42314880170ee8a450cdea7
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,15 @@
|
|
1
|
+
## 1.5.0
|
2
|
+
|
3
|
+
**29 January 2019**
|
4
|
+
|
5
|
+
Features:
|
6
|
+
|
7
|
+
* Removed tests untill fixed
|
8
|
+
* Removed unused dependencies
|
9
|
+
|
1
10
|
## 1.4.1
|
2
11
|
|
3
|
-
**15 January
|
12
|
+
**15 January 2019**
|
4
13
|
|
5
14
|
Features:
|
6
15
|
|
@@ -8,7 +17,7 @@ Features:
|
|
8
17
|
|
9
18
|
## 1.4.0
|
10
19
|
|
11
|
-
**14 January
|
20
|
+
**14 January 2019**
|
12
21
|
|
13
22
|
Features:
|
14
23
|
|
data/vagrant-s3auth-mfa.gemspec
CHANGED
@@ -8,14 +8,14 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.authors = ['Nikhil Benesch']
|
9
9
|
spec.email = ['benesch@whoop.com']
|
10
10
|
spec.summary = '[VRTDev Fork]Private, versioned Vagrant boxes hosted on Amazon S3.'
|
11
|
-
spec.homepage = 'https://github.com/vrtdev/vagrant-s3auth
|
11
|
+
spec.homepage = 'https://github.com/vrtdev/vagrant-s3auth'
|
12
12
|
spec.license = 'MIT'
|
13
13
|
|
14
14
|
spec.files = `git ls-files -z`.split("\x0")
|
15
15
|
spec.test_files = spec.files.grep(/spec/)
|
16
16
|
spec.require_paths = ['lib']
|
17
17
|
|
18
|
-
spec.add_dependency 'aws-sdk', '>=
|
18
|
+
spec.add_dependency 'aws-sdk-s3', '>= 1.30.0', '< 2'
|
19
19
|
spec.add_dependency 'aws_config', '~> 0.1.0'
|
20
20
|
|
21
21
|
spec.add_development_dependency 'bundler', '~> 1.5'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-s3auth-mfa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nikhil Benesch
|
@@ -11,25 +11,25 @@ cert_chain: []
|
|
11
11
|
date: 2019-01-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: aws-sdk
|
14
|
+
name: aws-sdk-s3
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 1.30.0
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '2'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
29
|
+
version: 1.30.0
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '2'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: aws_config
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -116,8 +116,6 @@ files:
|
|
116
116
|
- Gemfile
|
117
117
|
- LICENSE
|
118
118
|
- README.md
|
119
|
-
- Rakefile
|
120
|
-
- TESTING.md
|
121
119
|
- lib/vagrant-s3auth-mfa.rb
|
122
120
|
- lib/vagrant-s3auth-mfa/errors.rb
|
123
121
|
- lib/vagrant-s3auth-mfa/extension/downloader.rb
|
@@ -126,16 +124,8 @@ files:
|
|
126
124
|
- lib/vagrant-s3auth-mfa/util.rb
|
127
125
|
- lib/vagrant-s3auth-mfa/version.rb
|
128
126
|
- locales/en.yml
|
129
|
-
- test/box/minimal
|
130
|
-
- test/box/minimal.box
|
131
|
-
- test/box/public-minimal
|
132
|
-
- test/box/public-minimal.box
|
133
|
-
- test/cleanup.rb
|
134
|
-
- test/run.bats
|
135
|
-
- test/setup.rb
|
136
|
-
- test/support.rb
|
137
127
|
- vagrant-s3auth-mfa.gemspec
|
138
|
-
homepage: https://github.com/vrtdev/vagrant-s3auth
|
128
|
+
homepage: https://github.com/vrtdev/vagrant-s3auth
|
139
129
|
licenses:
|
140
130
|
- MIT
|
141
131
|
metadata: {}
|
data/Rakefile
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler/setup'
|
3
|
-
require 'rubocop/rake_task'
|
4
|
-
|
5
|
-
Dir.chdir(File.expand_path('../', __FILE__))
|
6
|
-
|
7
|
-
Bundler::GemHelper.install_tasks
|
8
|
-
|
9
|
-
RuboCop::RakeTask.new(:lint)
|
10
|
-
|
11
|
-
task :test do
|
12
|
-
sh 'bats test/run.bats'
|
13
|
-
end
|
14
|
-
|
15
|
-
task default: %w[lint test]
|
data/TESTING.md
DELETED
@@ -1,70 +0,0 @@
|
|
1
|
-
# Testing
|
2
|
-
|
3
|
-
No unit testing, since the project is so small. But a full suite of acceptance
|
4
|
-
tests that run using [Bats: Bash Automated Testing System][bats]! Basically, the
|
5
|
-
acceptance tests run `vagrant box add S3_URL` with a bunch of S3 URLs and box
|
6
|
-
types, and assert that everything works!
|
7
|
-
|
8
|
-
See [the .travis.yml CI configuration](.travis.yml) for a working example.
|
9
|
-
|
10
|
-
## Environment variables
|
11
|
-
|
12
|
-
You'll need to export the below. Recommended values included when not sensitive.
|
13
|
-
|
14
|
-
```bash
|
15
|
-
# AWS credentials with permissions to create S3 buckets
|
16
|
-
export AWS_ACCESS_KEY_ID=
|
17
|
-
export AWS_SECRET_ACCESS_KEY=
|
18
|
-
|
19
|
-
# Atlas (Vagrant Cloud) API credentials
|
20
|
-
export ATLAS_USERNAME="vagrant-s3auth"
|
21
|
-
export ATLAS_TOKEN
|
22
|
-
|
23
|
-
# Base name of bucket. Must be unique.
|
24
|
-
export VAGRANT_S3AUTH_BUCKET="testing.vagrant-s3auth.com"
|
25
|
-
|
26
|
-
# If specified as 'metadata', will upload 'box/metadata' and 'box/metadata.box'
|
27
|
-
# to each S3 bucket
|
28
|
-
export VAGRANT_S3AUTH_BOX_BASE="minimal"
|
29
|
-
|
30
|
-
# Base name of Atlas (Vagrant Cloud) box. Atlas boxes can never re-use a once
|
31
|
-
# existing name, so include a timestamp or random string in the name.
|
32
|
-
export VAGRANT_S3AUTH_ATLAS_BOX_NAME="vagrant-s3auth-192458"
|
33
|
-
|
34
|
-
# Additional S3 region to use in testing. US Standard is always used.
|
35
|
-
export VAGRANT_S3AUTH_REGION_NONSTANDARD="eu-west-1"
|
36
|
-
```
|
37
|
-
|
38
|
-
[bats]: https://github.com/sstephenson/bats
|
39
|
-
|
40
|
-
## Running tests
|
41
|
-
|
42
|
-
You'll need [Bats][bats] installed! Then:
|
43
|
-
|
44
|
-
```bash
|
45
|
-
# export env vars as described
|
46
|
-
$ test/setup.rb
|
47
|
-
$ rake test
|
48
|
-
# hack hack hack
|
49
|
-
$ rake test
|
50
|
-
$ test/cleanup.rb
|
51
|
-
```
|
52
|
-
|
53
|
-
## Scripts
|
54
|
-
|
55
|
-
### test/setup.rb
|
56
|
-
|
57
|
-
Creates two S3 buckets—one in US Standard (`us-east-1`) and one in
|
58
|
-
`$VAGRANT_S3AUTH_REGION_NONSTANDARD`, both with the contents of the box
|
59
|
-
directory.
|
60
|
-
|
61
|
-
Then creates an Atlas (Vagrant Cloud) box with one version with one VirtualBox
|
62
|
-
provider that points to one of the S3 boxes at random.
|
63
|
-
|
64
|
-
### test/cleanup.rb
|
65
|
-
|
66
|
-
Destroys S3 buckets and Atlas box.
|
67
|
-
|
68
|
-
## run.bats
|
69
|
-
|
70
|
-
Attempts to `vagrant box add` the boxes on S3 in every way possible.
|
data/test/box/minimal
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"name": "vagrant-s3auth-mfa/minimal",
|
3
|
-
"description": "This box contains company secrets.",
|
4
|
-
"versions": [{
|
5
|
-
"version": "1.0.1",
|
6
|
-
"providers": [{
|
7
|
-
"name": "virtualbox",
|
8
|
-
"url": "%{box_url}",
|
9
|
-
"checksum_type": "sha1",
|
10
|
-
"checksum": "8ea536dd3092cf159f02405edd44ded5b62ba4e6"
|
11
|
-
}]
|
12
|
-
}]
|
13
|
-
}
|
data/test/box/minimal.box
DELETED
Binary file
|
data/test/box/public-minimal
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"name": "vagrant-s3auth-mfa/public-minimal",
|
3
|
-
"description": "This box contains no company secrets.",
|
4
|
-
"versions": [{
|
5
|
-
"version": "1.0.1",
|
6
|
-
"providers": [{
|
7
|
-
"name": "virtualbox",
|
8
|
-
"url": "%{box_url}",
|
9
|
-
"checksum_type": "sha1",
|
10
|
-
"checksum": "8ea536dd3092cf159f02405edd44ded5b62ba4e6"
|
11
|
-
}]
|
12
|
-
}]
|
13
|
-
}
|
data/test/box/public-minimal.box
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
test/box/minimal.box
|
data/test/cleanup.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'bundler/setup'
|
4
|
-
require 'aws-sdk'
|
5
|
-
|
6
|
-
require_relative 'support'
|
7
|
-
|
8
|
-
[REGION_STANDARD, REGION_NONSTANDARD].each do |region|
|
9
|
-
s3 = Aws::S3::Resource.new(region: region)
|
10
|
-
|
11
|
-
buckets = if ARGV.include?('--all')
|
12
|
-
s3.buckets.select do |b|
|
13
|
-
b.name.include?('vagrant-s3auth-mfa.com') && b.name.include?(region)
|
14
|
-
end
|
15
|
-
else
|
16
|
-
[s3.bucket("#{region}.#{BUCKET}")]
|
17
|
-
end
|
18
|
-
|
19
|
-
buckets.each { |b| b.delete! if b.exists? }
|
20
|
-
end
|
21
|
-
|
22
|
-
atlas = Atlas.new(ATLAS_TOKEN, ATLAS_USERNAME)
|
23
|
-
atlas.delete_box(ATLAS_BOX_NAME)
|
data/test/run.bats
DELETED
@@ -1,147 +0,0 @@
|
|
1
|
-
#!/usr/bin/env bats
|
2
|
-
|
3
|
-
missing_vars=()
|
4
|
-
|
5
|
-
require_var() {
|
6
|
-
[[ "${!1}" ]] || missing_vars+=("$1")
|
7
|
-
}
|
8
|
-
|
9
|
-
require_var AWS_ACCESS_KEY_ID
|
10
|
-
require_var AWS_SECRET_ACCESS_KEY
|
11
|
-
require_var ATLAS_TOKEN
|
12
|
-
require_var ATLAS_USERNAME
|
13
|
-
require_var VAGRANT_S3AUTH_BUCKET
|
14
|
-
require_var VAGRANT_S3AUTH_BOX_BASE
|
15
|
-
require_var VAGRANT_S3AUTH_ATLAS_BOX_NAME
|
16
|
-
require_var VAGRANT_S3AUTH_REGION_NONSTANDARD
|
17
|
-
|
18
|
-
if [[ ${#missing_vars[*]} -gt 0 ]]; then
|
19
|
-
echo "Missing required environment variables:"
|
20
|
-
printf ' %s\n' "${missing_vars[@]}"
|
21
|
-
exit 1
|
22
|
-
fi
|
23
|
-
|
24
|
-
teardown() {
|
25
|
-
bundle exec vagrant box remove "$VAGRANT_S3AUTH_BOX_BASE" > /dev/null 2>&1 || true
|
26
|
-
bundle exec vagrant box remove "public-$VAGRANT_S3AUTH_BOX_BASE" > /dev/null 2>&1 || true
|
27
|
-
bundle exec vagrant box remove "vagrant-s3auth-mfa/$VAGRANT_S3AUTH_BOX_BASE" > /dev/null 2>&1 || true
|
28
|
-
bundle exec vagrant box remove "vagrant-s3auth-mfa/public-$VAGRANT_S3AUTH_BOX_BASE" > /dev/null 2>&1 || true
|
29
|
-
bundle exec vagrant box remove "$ATLAS_USERNAME/$VAGRANT_S3AUTH_ATLAS_BOX_NAME" > /dev/null 2>&1 || true
|
30
|
-
}
|
31
|
-
|
32
|
-
@test "vagrant cloud" {
|
33
|
-
bundle exec vagrant box add "$ATLAS_USERNAME/$VAGRANT_S3AUTH_ATLAS_BOX_NAME"
|
34
|
-
}
|
35
|
-
|
36
|
-
@test "simple box with full path standard url" {
|
37
|
-
bundle exec vagrant box add \
|
38
|
-
--name "$VAGRANT_S3AUTH_BOX_BASE" \
|
39
|
-
"https://s3.amazonaws.com/us-east-1.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE.box"
|
40
|
-
}
|
41
|
-
|
42
|
-
@test "public simple box with full path standard url without credentials" {
|
43
|
-
AWS_ACCESS_KEY_ID= \
|
44
|
-
bundle exec vagrant box add \
|
45
|
-
--name "$VAGRANT_S3AUTH_BOX_BASE" \
|
46
|
-
"https://s3.amazonaws.com/us-east-1.$VAGRANT_S3AUTH_BUCKET/public-$VAGRANT_S3AUTH_BOX_BASE.box"
|
47
|
-
}
|
48
|
-
|
49
|
-
@test "simple box with full host standard url" {
|
50
|
-
bundle exec vagrant box add \
|
51
|
-
--name "$VAGRANT_S3AUTH_BOX_BASE" \
|
52
|
-
"https://us-east-1.$VAGRANT_S3AUTH_BUCKET.s3.amazonaws.com/$VAGRANT_S3AUTH_BOX_BASE.box"
|
53
|
-
}
|
54
|
-
|
55
|
-
@test "simple box with shorthand standard url" {
|
56
|
-
bundle exec vagrant box add \
|
57
|
-
--name "$VAGRANT_S3AUTH_BOX_BASE" \
|
58
|
-
"s3://us-east-1.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE.box"
|
59
|
-
}
|
60
|
-
|
61
|
-
@test "simple box with full path nonstandard url" {
|
62
|
-
bundle exec vagrant box add \
|
63
|
-
--name "$VAGRANT_S3AUTH_BOX_BASE" \
|
64
|
-
"https://s3-$VAGRANT_S3AUTH_REGION_NONSTANDARD.amazonaws.com/$VAGRANT_S3AUTH_REGION_NONSTANDARD.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE.box"
|
65
|
-
}
|
66
|
-
|
67
|
-
@test "public simple box with full path nonstandard url without credentials" {
|
68
|
-
AWS_ACCESS_KEY_ID= \
|
69
|
-
bundle exec vagrant box add \
|
70
|
-
--name "$VAGRANT_S3AUTH_BOX_BASE" \
|
71
|
-
"https://s3-$VAGRANT_S3AUTH_REGION_NONSTANDARD.amazonaws.com/$VAGRANT_S3AUTH_REGION_NONSTANDARD.$VAGRANT_S3AUTH_BUCKET/public-$VAGRANT_S3AUTH_BOX_BASE.box"
|
72
|
-
}
|
73
|
-
|
74
|
-
@test "simple box with full host nonstandard url" {
|
75
|
-
bundle exec vagrant box add \
|
76
|
-
--name "$VAGRANT_S3AUTH_BOX_BASE" \
|
77
|
-
"https://$VAGRANT_S3AUTH_REGION_NONSTANDARD.$VAGRANT_S3AUTH_BUCKET.s3-$VAGRANT_S3AUTH_REGION_NONSTANDARD.amazonaws.com/$VAGRANT_S3AUTH_BOX_BASE.box"
|
78
|
-
}
|
79
|
-
|
80
|
-
@test "simple box with shorthand nonstandard url" {
|
81
|
-
bundle exec vagrant box add \
|
82
|
-
--name "$VAGRANT_S3AUTH_BOX_BASE" \
|
83
|
-
"s3://$VAGRANT_S3AUTH_REGION_NONSTANDARD.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE.box"
|
84
|
-
}
|
85
|
-
|
86
|
-
@test "metadata box with full path standard url" {
|
87
|
-
bundle exec vagrant box add \
|
88
|
-
--name "vagrant-s3auth-mfa/$VAGRANT_S3AUTH_BOX_BASE" \
|
89
|
-
"https://s3.amazonaws.com/us-east-1.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE"
|
90
|
-
}
|
91
|
-
|
92
|
-
@test "public metadata box with full path standard url without credentials" {
|
93
|
-
AWS_ACCESS_KEY_ID= \
|
94
|
-
bundle exec vagrant box add \
|
95
|
-
--name "vagrant-s3auth-mfa/public-$VAGRANT_S3AUTH_BOX_BASE" \
|
96
|
-
"https://s3.amazonaws.com/us-east-1.$VAGRANT_S3AUTH_BUCKET/public-$VAGRANT_S3AUTH_BOX_BASE"
|
97
|
-
}
|
98
|
-
|
99
|
-
@test "metadata box with full host standard url" {
|
100
|
-
bundle exec vagrant box add \
|
101
|
-
--name "vagrant-s3auth-mfa/$VAGRANT_S3AUTH_BOX_BASE" \
|
102
|
-
"https://us-east-1.$VAGRANT_S3AUTH_BUCKET.s3.amazonaws.com/$VAGRANT_S3AUTH_BOX_BASE"
|
103
|
-
}
|
104
|
-
|
105
|
-
@test "metadata box with shorthand standard url" {
|
106
|
-
bundle exec vagrant box add \
|
107
|
-
--name "vagrant-s3auth-mfa/$VAGRANT_S3AUTH_BOX_BASE" \
|
108
|
-
"s3://us-east-1.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE"
|
109
|
-
}
|
110
|
-
|
111
|
-
@test "metadata box with full path nonstandard url" {
|
112
|
-
bundle exec vagrant box add \
|
113
|
-
--name "vagrant-s3auth-mfa/$VAGRANT_S3AUTH_BOX_BASE" \
|
114
|
-
"https://s3-$VAGRANT_S3AUTH_REGION_NONSTANDARD.amazonaws.com/$VAGRANT_S3AUTH_REGION_NONSTANDARD.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE"
|
115
|
-
}
|
116
|
-
|
117
|
-
@test "public metadata box with full path nonstandard url without credentials" {
|
118
|
-
AWS_ACCESS_KEY_ID= \
|
119
|
-
bundle exec vagrant box add \
|
120
|
-
--name "vagrant-s3auth-mfa/public-$VAGRANT_S3AUTH_BOX_BASE" \
|
121
|
-
"https://s3-$VAGRANT_S3AUTH_REGION_NONSTANDARD.amazonaws.com/$VAGRANT_S3AUTH_REGION_NONSTANDARD.$VAGRANT_S3AUTH_BUCKET/public-$VAGRANT_S3AUTH_BOX_BASE"
|
122
|
-
}
|
123
|
-
|
124
|
-
|
125
|
-
@test "metadata box with full host nonstandard url" {
|
126
|
-
bundle exec vagrant box add \
|
127
|
-
--name "vagrant-s3auth-mfa/$VAGRANT_S3AUTH_BOX_BASE" \
|
128
|
-
"https://$VAGRANT_S3AUTH_REGION_NONSTANDARD.$VAGRANT_S3AUTH_BUCKET.s3-$VAGRANT_S3AUTH_REGION_NONSTANDARD.amazonaws.com/$VAGRANT_S3AUTH_BOX_BASE"
|
129
|
-
}
|
130
|
-
|
131
|
-
@test "metadata box with shorthand nonstandard url" {
|
132
|
-
bundle exec vagrant box add \
|
133
|
-
--name "vagrant-s3auth-mfa/$VAGRANT_S3AUTH_BOX_BASE" \
|
134
|
-
"s3://$VAGRANT_S3AUTH_REGION_NONSTANDARD.$VAGRANT_S3AUTH_BUCKET/$VAGRANT_S3AUTH_BOX_BASE"
|
135
|
-
}
|
136
|
-
|
137
|
-
@test "garbage shorthand url" {
|
138
|
-
run bundle exec vagrant box add --name "$VAGRANT_S3AUTH_BOX_BASE" s3://smoogedydoop
|
139
|
-
[[ "$status" -eq 1 ]]
|
140
|
-
[[ "$output" == *"Malformed shorthand S3 box URL"* ]]
|
141
|
-
}
|
142
|
-
|
143
|
-
@test "garbage full url" {
|
144
|
-
run bundle exec vagrant box add --name "$VAGRANT_S3AUTH_BOX_BASE" https://smoogedydoop
|
145
|
-
[[ "$status" -eq 1 ]]
|
146
|
-
[[ "$output" == *"error occurred while downloading the remote file"* ]]
|
147
|
-
}
|
data/test/setup.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'bundler/setup'
|
4
|
-
require 'aws-sdk'
|
5
|
-
|
6
|
-
require_relative 'support'
|
7
|
-
|
8
|
-
ROOT = Pathname.new(File.dirname(__FILE__))
|
9
|
-
|
10
|
-
box_urls = [REGION_STANDARD, REGION_NONSTANDARD].flat_map do |region|
|
11
|
-
s3 = Aws::S3::Resource.new(region: region)
|
12
|
-
bucket = s3.create_bucket(bucket: "#{region}.#{BUCKET}")
|
13
|
-
|
14
|
-
[BOX_BASE, 'public-' + BOX_BASE].flat_map do |box_name|
|
15
|
-
box = bucket.object("#{box_name}.box")
|
16
|
-
box.upload_file(ROOT + Pathname.new("box/#{box_name}.box"))
|
17
|
-
box.acl.put(acl: 'public-read') if box_name.start_with?('public')
|
18
|
-
|
19
|
-
metadata_string = format(File.read(ROOT + Pathname.new("box/#{box_name}")),
|
20
|
-
box_url: box.public_url)
|
21
|
-
|
22
|
-
metadata = bucket.object(box_name)
|
23
|
-
metadata.put(body: metadata_string, content_type: 'application/json')
|
24
|
-
metadata.acl.put(acl: 'public-read') if box_name.start_with?('public')
|
25
|
-
|
26
|
-
box.public_url
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
atlas = Atlas.new(ATLAS_TOKEN, ATLAS_USERNAME)
|
31
|
-
atlas.create_box(ATLAS_BOX_NAME)
|
32
|
-
atlas.create_version(ATLAS_BOX_NAME, '1.0.1')
|
33
|
-
atlas.create_provider(ATLAS_BOX_NAME, '1.0.1', box_urls.sample)
|
34
|
-
atlas.release_version(ATLAS_BOX_NAME, '1.0.1')
|
data/test/support.rb
DELETED
@@ -1,82 +0,0 @@
|
|
1
|
-
require 'http'
|
2
|
-
|
3
|
-
BOX_BASE = ENV['VAGRANT_S3AUTH_BOX_BASE'].freeze
|
4
|
-
BUCKET = ENV['VAGRANT_S3AUTH_BUCKET'].freeze
|
5
|
-
REGION_STANDARD = 'us-east-1'.freeze
|
6
|
-
REGION_NONSTANDARD = ENV['VAGRANT_S3AUTH_REGION_NONSTANDARD'].freeze
|
7
|
-
|
8
|
-
ATLAS_TOKEN = ENV['ATLAS_TOKEN'].freeze
|
9
|
-
ATLAS_USERNAME = ENV['ATLAS_USERNAME'].freeze
|
10
|
-
ATLAS_BOX_NAME = ENV['VAGRANT_S3AUTH_ATLAS_BOX_NAME'].freeze
|
11
|
-
|
12
|
-
class Atlas
|
13
|
-
BASE_URL = 'https://app.vagrantup.com/api/v1'.freeze
|
14
|
-
|
15
|
-
BOX_CREATE_URL = "#{BASE_URL}/boxes".freeze
|
16
|
-
BOX_RESOURCE_URL = "#{BASE_URL}/box/%<username>s/%<box_name>s".freeze
|
17
|
-
|
18
|
-
VERSION_CREATE_URL = "#{BOX_RESOURCE_URL}/versions".freeze
|
19
|
-
VERSION_RESOURCE_URL = "#{BOX_RESOURCE_URL}/version/%<version>s".freeze
|
20
|
-
VERSION_RELEASE_URL = "#{VERSION_RESOURCE_URL}/release".freeze
|
21
|
-
|
22
|
-
PROVIDER_CREATE_URL = "#{VERSION_RESOURCE_URL}/providers".freeze
|
23
|
-
PROVIDER_RESOURCE_URL = "#{VERSION_RESOURCE_URL}/provider/%<provider_name>s".freeze
|
24
|
-
|
25
|
-
attr_accessor :provider
|
26
|
-
|
27
|
-
def initialize(token, username)
|
28
|
-
raise if !token || token.empty?
|
29
|
-
raise if !username || username.empty?
|
30
|
-
|
31
|
-
@token = token
|
32
|
-
@username = username
|
33
|
-
@provider = 'virtualbox'
|
34
|
-
end
|
35
|
-
|
36
|
-
def create_box(box_name)
|
37
|
-
post(BOX_CREATE_URL, data: { box: { name: box_name, is_private: false } })
|
38
|
-
end
|
39
|
-
|
40
|
-
def delete_box(box_name)
|
41
|
-
url_params = { box_name: box_name }
|
42
|
-
delete(BOX_RESOURCE_URL, url_params: url_params)
|
43
|
-
end
|
44
|
-
|
45
|
-
def create_version(box_name, version)
|
46
|
-
post(VERSION_CREATE_URL,
|
47
|
-
data: { version: { version: version } },
|
48
|
-
url_params: { box_name: box_name })
|
49
|
-
end
|
50
|
-
|
51
|
-
def release_version(box_name, version)
|
52
|
-
put(VERSION_RELEASE_URL,
|
53
|
-
url_params: { box_name: box_name, version: version })
|
54
|
-
end
|
55
|
-
|
56
|
-
def create_provider(box_name, version, url)
|
57
|
-
post(PROVIDER_CREATE_URL,
|
58
|
-
data: { provider: { name: @provider, url: url } },
|
59
|
-
url_params: { box_name: box_name, version: version })
|
60
|
-
end
|
61
|
-
|
62
|
-
def request(method, url, options)
|
63
|
-
url_params = (options[:url_params] || {}).merge(username: @username)
|
64
|
-
data = (options[:data] || {})
|
65
|
-
|
66
|
-
url = (url % url_params) + "?access_token=#{@token}"
|
67
|
-
response = HTTP.request(method, url, json: data)
|
68
|
-
raise response unless response.code >= 200 && response.code < 400
|
69
|
-
end
|
70
|
-
|
71
|
-
def post(url, options)
|
72
|
-
request(:post, url, options)
|
73
|
-
end
|
74
|
-
|
75
|
-
def put(url, options)
|
76
|
-
request(:put, url, options)
|
77
|
-
end
|
78
|
-
|
79
|
-
def delete(url, options)
|
80
|
-
request(:delete, url, options)
|
81
|
-
end
|
82
|
-
end
|