75 lines
2.1 KiB
Ruby
75 lines
2.1 KiB
Ruby
# Copyright (c) HashiCorp, Inc.
|
|
# SPDX-License-Identifier: BUSL-1.1
|
|
|
|
require File.expand_path("../../../base", __dir__)
|
|
|
|
require Vagrant.source_root.join("plugins/commands/serve/command")
|
|
|
|
describe VagrantPlugins::CommandServe::Mappers do
|
|
include_context "unit"
|
|
|
|
subject { described_class.new }
|
|
|
|
context "Hash" do
|
|
it "unwraps wrapper types when they show up in the Hash" do
|
|
input = Hashicorp::Vagrant::Sdk::Args::Hash.new(
|
|
entries: [
|
|
Hashicorp::Vagrant::Sdk::Args::HashEntry.new(
|
|
key: Google::Protobuf::Any.pack(
|
|
Hashicorp::Vagrant::Sdk::Args::Symbol.new(str: "error_check")
|
|
),
|
|
value: Google::Protobuf::Any.pack(
|
|
Google::Protobuf::BoolValue.new(value: false)
|
|
)
|
|
)
|
|
]
|
|
)
|
|
output = subject.map(input, to: Hash)
|
|
|
|
expect(output[:error_check]).to eq(false)
|
|
|
|
input = Hashicorp::Vagrant::Sdk::Args::Hash.new(
|
|
entries: [
|
|
Hashicorp::Vagrant::Sdk::Args::HashEntry.new(
|
|
key: Google::Protobuf::Any.pack(
|
|
Google::Protobuf::StringValue.new(value: "error_check")
|
|
),
|
|
value: Google::Protobuf::Any.pack(
|
|
Google::Protobuf::BoolValue.new(value: false)
|
|
)
|
|
)
|
|
]
|
|
)
|
|
output = subject.map(input, to: Hash)
|
|
|
|
expect(output["error_check"]).to eq(false)
|
|
end
|
|
end
|
|
|
|
context "Array" do
|
|
it "unwraps wrapper types when they show up in the Array" do
|
|
input = Hashicorp::Vagrant::Sdk::Args::Array.new(
|
|
list: [
|
|
Google::Protobuf::Any.pack(
|
|
Google::Protobuf::BoolValue.new(value: false)
|
|
),
|
|
],
|
|
)
|
|
output = subject.map(input, to: Array)
|
|
|
|
expect(output).to eq([false])
|
|
end
|
|
end
|
|
|
|
context "MachineState" do
|
|
it "yields an id that's a symbol, not a string" do
|
|
input = Hashicorp::Vagrant::Sdk::Args::Target::Machine::State.new(
|
|
id: "running",
|
|
)
|
|
output = subject.map(input, to: Vagrant::MachineState)
|
|
|
|
expect(output.id).to eq(:running)
|
|
end
|
|
end
|
|
end
|