Merge pull request #10686 from briancain/move-middleware-auth-to-cloud-namespace
Fixes #10682: Move over AddAuthentication middleware and hooks
This commit is contained in:
commit
52edbedebf
|
@ -1,10 +1,10 @@
|
||||||
require "cgi"
|
require "cgi"
|
||||||
require "uri"
|
require "uri"
|
||||||
|
|
||||||
require_relative "../client"
|
require Vagrant.source_root.join("plugins/commands/cloud/client/client")
|
||||||
|
|
||||||
module VagrantPlugins
|
module VagrantPlugins
|
||||||
module LoginCommand
|
module CloudCommand
|
||||||
class AddAuthentication
|
class AddAuthentication
|
||||||
REPLACEMENT_HOSTS = [
|
REPLACEMENT_HOSTS = [
|
||||||
"app.vagrantup.com".freeze,
|
"app.vagrantup.com".freeze,
|
||||||
|
@ -27,7 +27,7 @@ module VagrantPlugins
|
||||||
|
|
||||||
def initialize(app, env)
|
def initialize(app, env)
|
||||||
@app = app
|
@app = app
|
||||||
LoginCommand::Plugin.init!
|
CloudCommand::Plugin.init!
|
||||||
end
|
end
|
||||||
|
|
||||||
def call(env)
|
def call(env)
|
||||||
|
@ -56,7 +56,7 @@ module VagrantPlugins
|
||||||
|
|
||||||
if u.host == server_uri.host
|
if u.host == server_uri.host
|
||||||
if server_uri.host != TARGET_HOST && !self.class.custom_host_notified?
|
if server_uri.host != TARGET_HOST && !self.class.custom_host_notified?
|
||||||
env[:ui].warn(I18n.t("login_command.middleware.authentication.different_target",
|
env[:ui].warn(I18n.t("cloud_command.middleware.authentication.different_target",
|
||||||
custom_host: server_uri.host, known_host: TARGET_HOST) + "\n")
|
custom_host: server_uri.host, known_host: TARGET_HOST) + "\n")
|
||||||
sleep CUSTOM_HOST_NOTIFY_WAIT
|
sleep CUSTOM_HOST_NOTIFY_WAIT
|
||||||
self.class.custom_host_notified!
|
self.class.custom_host_notified!
|
|
@ -1,5 +1,17 @@
|
||||||
en:
|
en:
|
||||||
cloud_command:
|
cloud_command:
|
||||||
|
middleware:
|
||||||
|
authentication:
|
||||||
|
different_target: |-
|
||||||
|
Vagrant has detected a custom Vagrant server in use for downloading
|
||||||
|
box files. An authentication token is currently set which will be
|
||||||
|
added to the box request. If the custom Vagrant server should not
|
||||||
|
be receiving the authentication token, please unset it.
|
||||||
|
|
||||||
|
Known Vagrant server: %{known_host}
|
||||||
|
Custom Vagrant server: %{custom_host}
|
||||||
|
|
||||||
|
Press ctrl-c to cancel...
|
||||||
publish:
|
publish:
|
||||||
update_continue: |-
|
update_continue: |-
|
||||||
%{obj} already exists, updating instead...
|
%{obj} already exists, updating instead...
|
||||||
|
|
|
@ -17,6 +17,11 @@ module VagrantPlugins
|
||||||
Command::Root
|
Command::Root
|
||||||
end
|
end
|
||||||
|
|
||||||
|
action_hook(:cloud_authenticated_boxes, :authenticate_box_url) do |hook|
|
||||||
|
require_relative "auth/middleware/add_authentication"
|
||||||
|
hook.prepend(AddAuthentication)
|
||||||
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def self.init!
|
def self.init!
|
||||||
|
|
|
@ -17,11 +17,6 @@ module VagrantPlugins
|
||||||
VagrantPlugins::CloudCommand::AuthCommand::Command::Login
|
VagrantPlugins::CloudCommand::AuthCommand::Command::Login
|
||||||
end
|
end
|
||||||
|
|
||||||
action_hook(:cloud_authenticated_boxes, :authenticate_box_url) do |hook|
|
|
||||||
require_relative "middleware/add_authentication"
|
|
||||||
hook.prepend(AddAuthentication)
|
|
||||||
end
|
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def self.init!
|
def self.init!
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
require File.expand_path("../../../../../base", __FILE__)
|
require File.expand_path("../../../../../../base", __FILE__)
|
||||||
|
|
||||||
require Vagrant.source_root.join("plugins/commands/login/middleware/add_authentication")
|
require Vagrant.source_root.join("plugins/commands/cloud/auth/middleware/add_authentication")
|
||||||
|
|
||||||
describe VagrantPlugins::LoginCommand::AddAuthentication do
|
describe VagrantPlugins::CloudCommand::AddAuthentication do
|
||||||
include_context "unit"
|
include_context "unit"
|
||||||
|
|
||||||
let(:app) { lambda { |env| } }
|
let(:app) { lambda { |env| } }
|
||||||
|
@ -26,7 +26,7 @@ describe VagrantPlugins::LoginCommand::AddAuthentication do
|
||||||
describe "#call" do
|
describe "#call" do
|
||||||
it "does nothing if we have no server set" do
|
it "does nothing if we have no server set" do
|
||||||
allow(Vagrant).to receive(:server_url).and_return(nil)
|
allow(Vagrant).to receive(:server_url).and_return(nil)
|
||||||
VagrantPlugins::LoginCommand::Client.new(iso_env).store_token("foo")
|
VagrantPlugins::CloudCommand::Client.new(iso_env).store_token("foo")
|
||||||
|
|
||||||
original = ["foo", "#{server_url}/bar"]
|
original = ["foo", "#{server_url}/bar"]
|
||||||
env[:box_urls] = original.dup
|
env[:box_urls] = original.dup
|
||||||
|
@ -47,7 +47,7 @@ describe VagrantPlugins::LoginCommand::AddAuthentication do
|
||||||
|
|
||||||
it "appends the access token to the URL of server URLs" do
|
it "appends the access token to the URL of server URLs" do
|
||||||
token = "foobarbaz"
|
token = "foobarbaz"
|
||||||
VagrantPlugins::LoginCommand::Client.new(iso_env).store_token(token)
|
VagrantPlugins::CloudCommand::Client.new(iso_env).store_token(token)
|
||||||
|
|
||||||
original = [
|
original = [
|
||||||
"http://google.com/box.box",
|
"http://google.com/box.box",
|
||||||
|
@ -71,7 +71,7 @@ describe VagrantPlugins::LoginCommand::AddAuthentication do
|
||||||
allow(subject).to receive(:sleep)
|
allow(subject).to receive(:sleep)
|
||||||
|
|
||||||
token = "foobarbaz"
|
token = "foobarbaz"
|
||||||
VagrantPlugins::LoginCommand::Client.new(iso_env).store_token(token)
|
VagrantPlugins::CloudCommand::Client.new(iso_env).store_token(token)
|
||||||
|
|
||||||
original = [
|
original = [
|
||||||
"http://google.com/box.box",
|
"http://google.com/box.box",
|
||||||
|
@ -92,7 +92,7 @@ describe VagrantPlugins::LoginCommand::AddAuthentication do
|
||||||
allow(Vagrant).to receive(:server_url).and_return(server_url)
|
allow(Vagrant).to receive(:server_url).and_return(server_url)
|
||||||
|
|
||||||
token = "foobarbaz"
|
token = "foobarbaz"
|
||||||
VagrantPlugins::LoginCommand::Client.new(iso_env).store_token(token)
|
VagrantPlugins::CloudCommand::Client.new(iso_env).store_token(token)
|
||||||
|
|
||||||
original = [
|
original = [
|
||||||
"http://google.com/box.box",
|
"http://google.com/box.box",
|
||||||
|
@ -115,9 +115,9 @@ describe VagrantPlugins::LoginCommand::AddAuthentication do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "modifies host URL to target if authorized host" do
|
it "modifies host URL to target if authorized host" do
|
||||||
originals = VagrantPlugins::LoginCommand::AddAuthentication::
|
originals = VagrantPlugins::CloudCommand::AddAuthentication::
|
||||||
REPLACEMENT_HOSTS.map{ |h| "http://#{h}/box.box" }
|
REPLACEMENT_HOSTS.map{ |h| "http://#{h}/box.box" }
|
||||||
expected = "http://#{VagrantPlugins::LoginCommand::AddAuthentication::TARGET_HOST}/box.box"
|
expected = "http://#{VagrantPlugins::CloudCommand::AddAuthentication::TARGET_HOST}/box.box"
|
||||||
env[:box_urls] = originals
|
env[:box_urls] = originals
|
||||||
subject.call(env)
|
subject.call(env)
|
||||||
env[:box_urls].each do |url|
|
env[:box_urls].each do |url|
|
||||||
|
@ -136,9 +136,9 @@ describe VagrantPlugins::LoginCommand::AddAuthentication do
|
||||||
|
|
||||||
it "returns original urls when not modified" do
|
it "returns original urls when not modified" do
|
||||||
to_persist = "file:////path/to/box.box"
|
to_persist = "file:////path/to/box.box"
|
||||||
to_change = VagrantPlugins::LoginCommand::AddAuthentication::
|
to_change = VagrantPlugins::CloudCommand::AddAuthentication::
|
||||||
REPLACEMENT_HOSTS.map{ |h| "http://#{h}/box.box" }.first
|
REPLACEMENT_HOSTS.map{ |h| "http://#{h}/box.box" }.first
|
||||||
expected = "http://#{VagrantPlugins::LoginCommand::AddAuthentication::TARGET_HOST}/box.box"
|
expected = "http://#{VagrantPlugins::CloudCommand::AddAuthentication::TARGET_HOST}/box.box"
|
||||||
env[:box_urls] = [to_persist, to_change]
|
env[:box_urls] = [to_persist, to_change]
|
||||||
subject.call(env)
|
subject.call(env)
|
||||||
check_persist, check_change = env[:box_urls]
|
check_persist, check_change = env[:box_urls]
|
||||||
|
@ -152,7 +152,7 @@ describe VagrantPlugins::LoginCommand::AddAuthentication do
|
||||||
|
|
||||||
it "does not append multiple access_tokens" do
|
it "does not append multiple access_tokens" do
|
||||||
token = "foobarbaz"
|
token = "foobarbaz"
|
||||||
VagrantPlugins::LoginCommand::Client.new(iso_env).store_token(token)
|
VagrantPlugins::CloudCommand::Client.new(iso_env).store_token(token)
|
||||||
|
|
||||||
original = [
|
original = [
|
||||||
"#{server_url}/foo.box?access_token=existing",
|
"#{server_url}/foo.box?access_token=existing",
|
Loading…
Reference in New Issue