}
@Test
public void testApplySkipsWhenAlreadyExists() throws Exception {
Long slotId = 0l;
IMachine machine = createMock(IMachine.class);
INetworkAdapter iNetworkAdapter = createMock(INetworkAdapter.class);
INATEngine natEngine = createMock(INATEngine.class);
expect(machine.getNetworkAdapter(slotId)).andReturn(iNetworkAdapter);
iNetworkAdapter.setAttachmentType(NAT);
expect(iNetworkAdapter.getNATEngine()).andReturn(natEngine).anyTimes();
List<String> redirects = Lists.newArrayList();
expect(natEngine.getRedirects()).andReturn(redirects);
natEngine.addRedirect("TCP@127.0.0.1:2222->:22", TCP, "127.0.0.1",
2222, "", 22);
expectLastCall()
.andThrow(
new VBoxException(null,
"VirtualBox error: A NAT rule of this name already exists (0x80070057)"));
iNetworkAdapter.setEnabled(true);
machine.saveSettings();
replay(machine, iNetworkAdapter, natEngine);
NetworkAdapter networkAdapter = NetworkAdapter.builder()
.networkAttachmentType(NetworkAttachmentType.NAT)
.tcpRedirectRule("127.0.0.1", 2222, "", 22).build();