Forwarding ports action

This commit is contained in:
Mitchell Hashimoto 2010-02-13 12:17:59 -08:00
parent 1a89e50da7
commit 0fa8a94f32
2 changed files with 45 additions and 0 deletions

View File

@ -0,0 +1,20 @@
module Vagrant
module Actions
class ForwardPorts < Base
def execute!
logger.info "Forwarding ports..."
Vagrant.config.vm.forwarded_ports.each do |name, options|
logger.info "Forwarding \"#{name}\": #{options[:guestport]} => #{options[:hostport]}"
port = VirtualBox::ForwardedPort.new
port.name = name
port.hostport = options[:hostport]
port.guestport = options[:guestport]
@vm.forwarded_ports << port
end
@vm.save(true)
end
end
end
end

View File

@ -0,0 +1,25 @@
require File.join(File.dirname(__FILE__), '..', '..', 'test_helper')
class ForwardPortsActionTest < Test::Unit::TestCase
setup do
@mock_vm, @vm, @action = mock_action(Vagrant::Actions::ForwardPorts)
mock_config
end
should "create a port forwarding for the VM" do
forwarded_ports = mock("forwarded_ports")
Vagrant.config.vm.forwarded_ports.each do |name, opts|
forwarded_ports.expects(:<<).with do |port|
assert_equal name, port.name
assert_equal opts[:hostport], port.hostport
assert_equal opts[:guestport], port.guestport
true
end
end
@mock_vm.expects(:forwarded_ports).returns(forwarded_ports)
@mock_vm.expects(:save).with(true).once
@action.execute!
end
end