com.telefonica.euro_iaas.sdc.dao.impl.ChefNodeDaoRestImplTest.java Source code

Java tutorial

Introduction

Here is the source code for com.telefonica.euro_iaas.sdc.dao.impl.ChefNodeDaoRestImplTest.java

Source

/**
 * Copyright 2014 Telefonica Investigacin y Desarrollo, S.A.U <br>
 * This file is part of FI-WARE project.
 * <p>
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
 * the License.
 * </p>
 * <p>
 * You may obtain a copy of the License at:<br>
 * <br>
 * http://www.apache.org/licenses/LICENSE-2.0
 * </p>
 * <p>
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * </p>
 * <p>
 * See the License for the specific language governing permissions and limitations under the License.
 * </p>
 * <p>
 * For those usages not covered by the Apache version 2.0 License please contact with opensource@tid.es
 * </p>
 */

package com.telefonica.euro_iaas.sdc.dao.impl;

import static com.telefonica.euro_iaas.sdc.util.SystemPropertiesProvider.CHEF_SERVER_NODES_PATH;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Matchers.anyObject;
import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.times;

import java.io.InputStream;

import javax.ws.rs.core.MediaType;

import org.apache.commons.io.IOUtils;
import org.junit.Test;

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.ClientConfig;
import com.telefonica.euro_iaas.commons.dao.EntityNotFoundException;
import com.telefonica.euro_iaas.sdc.dao.ChefClientConfig;
import com.telefonica.euro_iaas.sdc.exception.CanNotCallChefException;
import com.telefonica.euro_iaas.sdc.model.dto.ChefNode;
import com.telefonica.euro_iaas.sdc.util.MixlibAuthenticationDigester;
import com.telefonica.euro_iaas.sdc.util.SystemPropertiesProvider;

/**
 * Unitary tests for ChefNodeDaoRestImpl.
 * @author jesus.movilla
 *
 */
public class ChefNodeDaoRestImplTest {

    /**
     * Testing loadNode method.
     * @throws CanNotCallChefException
     */
    @Test
    public void shouldLoadNode() throws CanNotCallChefException {
        // given
        ChefNodeDaoRestImpl chefNodeDaoRestImpl = new ChefNodeDaoRestImpl();
        String chefNodeName = "hostname.domain";
        SystemPropertiesProvider propertiesProvider = mock(SystemPropertiesProvider.class);
        MixlibAuthenticationDigester mixlibAuthenticationDigester = mock(MixlibAuthenticationDigester.class);
        Client client = mock(Client.class);
        ChefClientConfig clientConfig = mock(ChefClientConfig.class);

        chefNodeDaoRestImpl.setPropertiesProvider(propertiesProvider);
        chefNodeDaoRestImpl.setDigester(mixlibAuthenticationDigester);
        chefNodeDaoRestImpl.setClientConfig(clientConfig);

        WebResource webResource = mock(WebResource.class);
        WebResource.Builder builder = mock(WebResource.Builder.class);
        InputStream inputStream = IOUtils.toInputStream("{\"json_class\":\"Chef::Node\",\"override\":{},"
                + "\"chef_environment\":\"_default\",\"chef_type\":\"node\","
                + "\"normal\":{\"tags\":[]},\"run_list\":[],"
                + "\"automatic\":{\"os\":\"linux\",\"cpu\":{\"real\":0,\"0\":{\"model\":\"2\","
                + "\"flags\":[\"fpu\",\"de\",\"pse\",\"tsc\",\"msr\",\"pae\",\"mce\",\"cx8\","
                + "\"apic\",\"mtrr\",\"pge\",\"mca\",\"cmov\",\"pse36\",\"clflush\",\"mmx\","
                + "\"fxsr\",\"sse\",\"sse2\",\"syscall\",\"nx\",\"lm\",\"up\",\"rep_good\","
                + "\"unfair_spinlock\",\"pni\",\"vmx\",\"cx16\",\"popcnt\",\"hypervisor\","
                + "\"lahf_lm\"],\"mhz\":\"2394.230\",\"model_name\":\"QEMU Virtual CPU version 1.0\","
                + "\"family\":\"6\",\"vendor_id\":\"GenuineIntel\",\"stepping\":\"3\","
                + "\"cache_size\":\"4096 KB\"},\"total\":1},\"current_user\":\"root\","
                + "\"ip6address\":\"fe80::f816:3eff:fe5c:ced3\","
                + "\"virtualization\":{\"role\":\"guest\",\"system\":\"kvm\"},"
                + "\"languages\":{\"ruby\":{\"bin_dir\":\"/usr/bin\",\"host_os\":\"linux-gnu\","
                + "\"target_os\":\"linux\",\"host\":\"x86_64-redhat-linux-gnu\","
                + "\"host_cpu\":\"x86_64\",\"version\":\"1.8.7\",\"host_vendor\":\"redhat\","
                + "\"target\":\"x86_64-redhat-linux-gnu\",\"gem_bin\":\"/usr/bin/gem\","
                + "\"platform\":\"x86_64-linux\",\"release_date\":\"2011-06-30\","
                + "\"ruby_bin\":\"/usr/bin/ruby\",\"target_cpu\":\"x86_64\","
                + "\"gems_dir\":\"/usr/lib64/ruby/gems/1.8\",\"target_vendor\":\"redhat\"},"
                + "\"perl\":{\"version\":\"5.10.1\",\"archname\":\"x86_64-linux-thread-multi\"},"
                + "\"python\":{\"builddate\":\"Dec 7 2011, 20:48:22\",\"version\":\"2.6.6\"},\"lua\":{\"version\":\"5.1.4\"},"
                + "\"java\":{\"runtime\":{\"name\":\"OpenJDK Runtime Environment (IcedTea6 1.10.4)\","
                + "\"build\":\"rhel-1.41.1.10.4.el6-x86_64\"},\"version\":\"1.6.0_22\",\"hotspot\":"
                + "{\"name\":\"OpenJDK 64-Bit Server VM\",\"build\":\"20.0-b11, mixed mode\"}}},\"lsb\":{\"release\":\"6.2\",\"id\":\"CentOS\","
                + "\"description\":\"CentOS release 6.2 (Final)\",\"codename\":\"Final\"},\"domain\":\"novalocal\",\"platform_version\":\"6.2\","
                + "\"platform_family\":\"rhel\",\"roles\":[],\"memory\":{\"writeback\":\"0kB\",\"inactive\":\"103500kB\",\"vmalloc_chunk\":"
                + "\"34359731080kB\",\"dirty\":\"116kB\",\"vmalloc_used\":\"3528kB\",\"page_tables\":\"3984kB\","
                + "\"committed_as\":\"193392kB\",\"free\":\"286480kB\",\"slab\":\"27276kB\",\"nfs_unstable\":\"0kB\","
                + "\"anon_pages\":\"112640kB\",\"active\":\"70288kB\",\"swap\":{\"free\":\"0kB\",\"cached\":\"0kB\","
                + "\"total\":\"0kB\"},\"buffers\":\"11468kB\",\"bounce\":\"0kB\",\"commit_limit\":\"251360kB\","
                + "\"vmalloc_total\":\"34359738367kB\",\"mapped\":\"12436kB\",\"slab_reclaimable\":\"7728kB\","
                + "\"cached\":\"49652kB\",\"total\":\"502720kB\",\"slab_unreclaim\":\"19548kB\"},"
                + "\"idletime\":\"10 minutes 11 seconds\",\"command\":{\"ps\":\"ps -ef\"},\"idletime_seconds\":611,"
                + "\"ohai_time\":2381841405.78531,\"uptime\":\"10 minutes 55 seconds\",\"dmi\":{\"chassis\":{\"lock\":\"Not Present\",\"type\":\"Other\",\"asset_tag\":\"Not Specified\",\"version\":\"Not Specified\",\"power_supply_state\":\"Safe\",\"security_status\":\"Unknown\",\"boot_up_state\":\"Safe\",\"height\":\"Unspecified\",\"all_records\":[{\"Lock\":\"Not Present\",\"size\":\"3\",\"Serial Number\":\"Not Specified\",\"Version\":\"Not Specified\",\"Boot-up State\":\"Safe\",\"Asset Tag\":\"Not Specified\",\"Type\":\"Other\",\"Security Status\":\"Unknown\",\"Number Of Power Cords\":\"Unspecified\",\"application_identifier\":\"Chassis Information\",\"Power Supply State\":\"Safe\",\"record_id\":\"0x0300\",\"OEM Information\":\"0x00000000\",\"Height\":\"Unspecified\",\"Thermal State\":\"Safe\",\"Manufacturer\":\"Bochs\"}],\"serial_number\":\"Not Specified\",\"manufacturer\":\"Bochs\",\"number_of_power_cords\":\"Unspecified\",\"oem_information\":\"0x00000000\",\"thermal_state\":\"Safe\"},\"structures\":{\"size\":\"263\",\"count\":\"10\"},\"dmidecode_version\":\"2.11\",\"processor\":{\"locator\":\"DIMM 0\",\"status\":\"No errors detected\",\"bank_locator\":\"Not Specified\",\"voltage\":\"Unknown\",\"max_speed\":\"2000 MHz\",\"size\":\"512 MB\",\"l2_cache_handle\":\"Not Provided\",\"form_factor\":\"DIMM\",\"data_width\":\"64 bits\",\"type\":\"RAM\",\"range_size\":\"512 MB\",\"total_width\":\"64 bits\",\"physical_device_handle\":\"0x1100\",\"number_of_devices\":\"1\",\"id\":\"23 06 00 00 FD FB 8B 07\",\"maximum_capacity\":\"512 MB\",\"partition_width\":\"1\",\"type_detail\":\"None\",\"l1_cache_handle\":\"Not Provided\",\"partition_row_position\":\"1\",\"physical_array_handle\":\"0x1000\",\"version\":\"Not Specified\",\"use\":\"System Memory\",\"error_correction_type\":\"Multi-bit ECC\",\"starting_address\":\"0x00000000000\",\"all_records\":[{\"Array Handle\":\"0x1000\",\"L1 Cache Handle\":\"Not Provided\",\"Voltage\":\"Unknown\",\"Locator\":\"DIMM 0\",\"ID\":\"23 06 00 00 FD FB 8B 07\",\"size\":\"4\",\"Set\":\"None\",\"Size\":\"512 MB\",\"Number Of Devices\":\"1\",\"Version\":\"Not Specified\",\"Status\":\"No errors detected\",\"Maximum Capacity\":\"512 MB\",\"Partition Width\":\"1\",\"Partition Row Position\":\"1\",\"Type Detail\":\"None\",\"External Clock\":\"Unknown\",\"Memory Array Mapped Address Handle\":\"0x1300\",\"Bank Locator\":\"Not Specified\",\"Total Width\":\"64 bits\",\"Current Speed\":\"2000 MHz\",\"Type\":\"RAM\",\"Data Width\":\"64 bits\",\"L3 Cache Handle\":\"Not Provided\",\"Socket Designation\":\"CPU 1\",\"Max Speed\":\"2000 MHz\",\"Range Size\":\"512 MB\",\"Form Factor\":\"DIMM\",\"Physical Array Handle\":\"0x1000\",\"Use\":\"System Memory\",\"application_identifier\":\"End Of Table\",\"Starting Address\":\"0x00000000000\",\"Ending Address\":\"0x0001FFFFFFF\",\"Physical Device Handle\":\"0x1100\",\"Upgrade\":\"Other\",\"record_id\":\"0x0401\",\"Error Information Handle\":\"0x0307\",\"Manufacturer\":\"Bochs\",\"L2 Cache Handle\":\"Not Provided\",\"Error Correction Type\":\"Multi-bit ECC\",\"Family\":\"Other\",\"Location\":\"Other\"}],\"current_speed\":\"2000 MHz\",\"location\":\"Other\",\"socket_designation\":\"CPU 1\",\"manufacturer\":\"Bochs\",\"family\":\"Other\",\"set\":\"None\",\"memory_array_mapped_address_handle\":\"0x1300\",\"external_clock\":\"Unknown\",\"array_handle\":\"0x1000\",\"upgrade\":\"Other\",\"l3_cache_handle\":\"Not Provided\",\"ending_address\":\"0x0001FFFFFFF\",\"error_information_handle\":\"0x0307\"},\"smbios_version\":\"2.4\",\"bios\":{\"version\":\"Bochs\",\"bios_revision\":\"1.0\",\"all_records\":[{\"size\":\"0\",\"Characteristics\":{\"BIOS characteristics not supported\":null,\"Targeted content distribution is supported\":null},\"Release Date\":\"01/01/2007\",\"Runtime Size\":\"96 kB\",\"Version\":\"Bochs\",\"BIOS Revision\":\"1.0\",\"application_identifier\":\"BIOS Information\",\"record_id\":\"0x0000\",\"ROM Size\":\"64 kB\",\"Vendor\":\"Bochs\",\"Address\":\"0xE8000\"}],\"runtime_size\":\"96 kB\",\"release_date\":\"01/01/2007\",\"address\":\"0xE8000\",\"rom_size\":\"64 kB\",\"vendor\":\"Bochs\"},\"system\":{\"wake_up_type\":\"Power Switch\",\"version\":\"Not Specified\",\"product_name\":\"Bochs\",\"all_records\":[{\"Wake-up Type\":\"Power Switch\",\"Product Name\":\"Bochs\",\"size\":\"1\",\"Serial Number\":\"Not Specified\",\"Version\":\"Not Specified\",\"UUID\":\"A378FD62-BBC8-4BA4-8C8D-8D196789708C\",\"SKU Number\":\"Not Specified\",\"application_identifier\":\"System Information\",\"record_id\":\"0x0100\",\"Manufacturer\":\"Bochs\",\"Family\":\"Not Specified\"}],\"serial_number\":\"Not Specified\",\"manufacturer\":\"Bochs\",\"family\":\"Not Specified\",\"sku_number\":\"Not Specified\",\"uuid\":\"A378FD62-BBC8-4BA4-8C8D-8D196789708C\"}},\"block_device\":{\"ram0\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram1\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram2\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram3\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram4\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram5\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram6\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram7\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram8\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram9\":{\"size\":\"32768\",\"removable\":\"0\"},\"vda\":{\"size\":\"10485760\",\"vendor\":\"6900\",\"removable\":\"0\"},\"loop0\":{\"size\":\"0\",\"removable\":\"0\"},\"loop1\":{\"size\":\"0\",\"removable\":\"0\"},\"loop2\":{\"size\":\"0\",\"removable\":\"0\"},\"loop3\":{\"size\":\"0\",\"removable\":\"0\"},\"loop4\":{\"size\":\"0\",\"removable\":\"0\"},\"loop5\":{\"size\":\"0\",\"removable\":\"0\"},\"loop6\":{\"size\":\"0\",\"removable\":\"0\"},\"loop7\":{\"size\":\"0\",\"removable\":\"0\"},\"ram10\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram11\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram12\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram13\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram14\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram15\":{\"size\":\"32768\",\"removable\":\"0\"}},\"platform\":\"centos\",\"fqdn\":\"sdc15102013d.novalocal\",\"filesystem\":{\"/sys\":{\"mount\":\"/sys\",\"fs_type\":\"sysfs\",\"mount_options\":[\"rw\",\"relatime\"]},\"/dev/vda1\":{\"mount\":\"/\",\"fs_type\":\"ext4\",\"percent_used\":\"44%\",\"kb_size\":\"5159552\",\"mount_options\":[\"rw\"],\"uuid\":\"93ab5295-5527-4919-8098-ce9b49bc7a65\",\"kb_used\":\"2142816\",\"kb_available\":\"2754648\"},\"/proc/bus/usb\":{\"mount\":\"/proc/bus/usb\",\"fs_type\":\"usbfs\",\"mount_options\":[\"rw\",\"relatime\"]},\"tmpfs\":{\"mount\":\"/dev/shm\",\"fs_type\":\"tmpfs\",\"percent_used\":\"0%\",\"kb_size\":\"251360\",\"mount_options\":[\"rw\"],\"kb_used\":\"0\",\"kb_available\":\"251360\"},\"rootfs\":{\"mount\":\"/\",\"fs_type\":\"rootfs\",\"mount_options\":[\"rw\"]},\"sysfs\":{\"mount\":\"/sys\",\"fs_type\":\"sysfs\",\"mount_options\":[\"rw\"]},\"/proc\":{\"mount\":\"/proc\",\"fs_type\":\"proc\",\"mount_options\":[\"rw\",\"relatime\"]},\"devpts\":{\"mount\":\"/dev/pts\",\"fs_type\":\"devpts\",\"mount_options\":[\"rw\",\"gid=5\",\"mode=620\"]},\"/etc/auto.misc\":{\"mount\":\"/misc\",\"fs_type\":\"autofs\",\"mount_options\":[\"rw\",\"relatime\",\"fd=7\",\"pgrp=1402\",\"timeout=300\",\"minproto=5\",\"maxproto=5\",\"indirect\"]},\"none\":{\"mount\":\"/proc/sys/fs/binfmt_misc\",\"fs_type\":\"binfmt_misc\",\"mount_options\":[\"rw\"]},\"udev\":{\"mount\":\"/dev\",\"fs_type\":\"devtmpfs\",\"mount_options\":[\"rw\",\"relatime\",\"size=241740k\",\"nr_inodes=60435\",\"mode=755\"]},\"proc\":{\"mount\":\"/proc\",\"fs_type\":\"proc\",\"mount_options\":[\"rw\"]},\"sunrpc\":{\"mount\":\"/var/lib/nfs/rpc_pipefs\",\"fs_type\":\"rpc_pipefs\",\"mount_options\":[\"rw\"]},\"-hosts\":{\"mount\":\"/net\",\"fs_type\":\"autofs\",\"mount_options\":[\"rw\",\"relatime\",\"fd=13\",\"pgrp=1402\",\"timeout=300\",\"minproto=5\",\"maxproto=5\",\"indirect\"]}},\"kernel\":{\"release\":\"2.6.32-220.el6.x86_64\",\"os\":\"GNU/Linux\",\"machine\":\"x86_64\",\"version\":\"#1 SMP Tue Dec 6 19:48:22 GMT 2011\",\"modules\":{\"virtio_balloon\":{\"size\":\"4347\",\"refcount\":\"0\"},\"microcode\":{\"size\":\"112594\",\"refcount\":\"0\"},\"i2c_core\":{\"size\":\"31276\",\"refcount\":\"1\"},\"mbcache\":{\"size\":\"8144\",\"refcount\":\"1\"},\"ip6table_filter\":{\"size\":\"2889\",\"refcount\":\"1\"},\"i2c_piix4\":{\"size\":\"12608\",\"refcount\":\"0\"},\"ip6t_REJECT\":{\"size\":\"4628\",\"refcount\":\"2\"},\"ata_generic\":{\"size\":\"3837\",\"refcount\":\"0\"},\"virtio_pci\":{\"size\":\"6687\",\"refcount\":\"0\"},\"dm_log\":{\"size\":\"10122\",\"refcount\":\"2\"},\"dm_mod\":{\"size\":\"81500\",\"refcount\":\"2\"},\"nf_conntrack\":{\"size\":\"79453\",\"refcount\":\"2\"},\"ipv6\":{\"size\":\"322029\",\"refcount\":\"29\"},\"virtio_net\":{\"size\":\"15839\",\"refcount\":\"0\"},\"ata_piix\":{\"size\":\"22846\",\"refcount\":\"0\"},\"ip6_tables\":{\"size\":\"19458\",\"refcount\":\"1\"},\"xt_state\":{\"size\":\"1492\",\"refcount\":\"2\"},\"virtio_blk\":{\"size\":\"6671\",\"refcount\":\"2\"},\"nf_conntrack_ipv6\":{\"size\":\"8748\",\"refcount\":\"2\"},\"dm_mirror\":{\"size\":\"14101\",\"refcount\":\"0\"},\"autofs4\":{\"size\":\"26888\",\"refcount\":\"3\"},\"pata_acpi\":{\"size\":\"3701\",\"refcount\":\"0\"},\"dm_region_hash\":{\"size\":\"12170\",\"refcount\":\"1\"},\"nf_defrag_ipv6\":{\"size\":\"12182\",\"refcount\":\"1\"},\"ext4\":{\"size\":\"364410\",\"refcount\":\"1\"},\"virtio_ring\":{\"size\":\"7729\",\"refcount\":\"4\"},\"jbd2\":{\"size\":\"88738\",\"refcount\":\"1\"},\"sunrpc\":{\"size\":\"243758\",\"refcount\":\"1\"},\"virtio\":{\"size\":\"4890\",\"refcount\":\"4\"}},\"name\":\"Linux\"},\"hostname\":\"sdc15102013d\",\"network\":{\"default_interface\":\"eth0\",\"interfaces\":{\"eth0\":{\"type\":\"eth\",\"addresses\":{\"172.30.5.13\":{\"scope\":\"Global\",\"netmask\":\"255.255.255.0\",\"family\":\"inet\",\"broadcast\":\"172.30.5.255\",\"prefixlen\":\"24\"},\"fe80::f816:3eff:fe5c:ced3\":{\"scope\":\"Link\",\"family\":\"inet6\",\"prefixlen\":\"64\"},\"FA:16:3E:5C:CE:D3\":{\"family\":\"lladdr\"}},\"arp\":{\"172.30.5.1\":\"54:52:00:37:68:64\"},\"flags\":[\"BROADCAST\",\"MULTICAST\",\"UP\",\"LOWER_UP\"],\"number\":\"0\",\"routes\":[{\"scope\":\"link\",\"destination\":\"172.30.5.0/24\",\"proto\":\"kernel\",\"src\":\"172.30.5.13\",\"family\":\"inet\"},{\"scope\":\"link\",\"destination\":\"169.254.0.0/16\",\"family\":\"inet\",\"metric\":\"1002\"},{\"via\":\"172.30.5.1\",\"destination\":\"default\",\"family\":\"inet\"},{\"destination\":\"fe80::/64\",\"proto\":\"kernel\",\"family\":\"inet6\",\"metric\":\"256\"}],\"encapsulation\":\"Ethernet\",\"mtu\":\"1500\",\"state\":\"up\"},\"lo\":{\"addresses\":{\"::1\":{\"scope\":\"Node\",\"family\":\"inet6\",\"prefixlen\":\"128\"},\"127.0.0.1\":{\"scope\":\"Node\",\"netmask\":\"255.0.0.0\",\"family\":\"inet\",\"prefixlen\":\"8\"}},\"flags\":[\"LOOPBACK\",\"UP\",\"LOWER_UP\"],\"routes\":[{\"destination\":\"unreachable\",\"family\":\"inet6\",\"metric\":\"1024\"}],\"encapsulation\":\"Loopback\",\"mtu\":\"16436\",\"state\":\"unknown\"}},\"default_gateway\":\"172.30.5.1\"},\"keys\":{\"ssh\":{}},\"etc\":{\"passwd\":{\"bin\":{\"dir\":\"/bin\",\"gid\":1,\"uid\":1,\"gecos\":\"bin\",\"shell\":\"/sbin/nologin\"},\"uucp\":{\"dir\":\"/var/spool/uucp\",\"gid\":14,\"uid\":10,\"gecos\":\"uucp\",\"shell\":\"/sbin/nologin\"},\"haldaemon\":{\"dir\":\"/\",\"gid\":68,\"uid\":68,\"gecos\":\"HAL daemon\",\"shell\":\"/sbin/nologin\"},\"localadmin\":{\"dir\":\"/home/localadmin\",\"gid\":500,\"uid\":500,\"gecos\":\"\",\"shell\":\"/bin/bash\"},\"gopher\":{\"dir\":\"/var/gopher\",\"gid\":30,\"uid\":13,\"gecos\":\"gopher\",\"shell\":\"/sbin/nologin\"},\"vcsa\":{\"dir\":\"/dev\",\"gid\":69,\"uid\":69,\"gecos\":\"virtual console memory owner\",\"shell\":\"/sbin/nologin\"},\"abrt\":{\"dir\":\"/etc/abrt\",\"gid\":173,\"uid\":173,\"gecos\":\"\",\"shell\":\"/sbin/nologin\"},\"nfsnobody\":{\"dir\":\"/var/lib/nfs\",\"gid\":65534,\"uid\":65534,\"gecos\":\"Anonymous NFS User\",\"shell\":\"/sbin/nologin\"},\"daemon\":{\"dir\":\"/sbin\",\"gid\":2,\"uid\":2,\"gecos\":\"daemon\",\"shell\":\"/sbin/nologin\"},\"saslauth\":{\"dir\":\"/var/empty/saslauth\",\"gid\":76,\"uid\":499,\"gecos\":\"\\\"Saslauthd user\\\"\",\"shell\":\"/sbin/nologin\"},\"lp\":{\"dir\":\"/var/spool/lpd\",\"gid\":7,\"uid\":4,\"gecos\":\"lp\",\"shell\":\"/sbin/nologin\"},\"tcpdump\":{\"dir\":\"/\",\"gid\":72,\"uid\":72,\"gecos\":\"\",\"shell\":\"/sbin/nologin\"},\"games\":{\"dir\":\"/usr/games\",\"gid\":100,\"uid\":12,\"gecos\":\"games\",\"shell\":\"/sbin/nologin\"},\"halt\":{\"dir\":\"/sbin\",\"gid\":0,\"uid\":7,\"gecos\":\"halt\",\"shell\":\"/sbin/halt\"},\"shutdown\":{\"dir\":\"/sbin\",\"gid\":0,\"uid\":6,\"gecos\":\"shutdown\",\"shell\":\"/sbin/shutdown\"},\"oprofile\":{\"dir\":\"/home/oprofile\",\"gid\":16,\"uid\":16,\"gecos\":\"Special user account to be used by OProfile\",\"shell\":\"/sbin/nologin\"},\"rpc\":{\"dir\":\"/var/cache/rpcbind\",\"gid\":32,\"uid\":32,\"gecos\":\"Rpcbind Daemon\",\"shell\":\"/sbin/nologin\"},\"nobody\":{\"dir\":\"/\",\"gid\":99,\"uid\":99,\"gecos\":\"Nobody\",\"shell\":\"/sbin/nologin\"},\"sync\":{\"dir\":\"/sbin\",\"gid\":0,\"uid\":5,\"gecos\":\"sync\",\"shell\":\"/bin/sync\"},\"sshd\":{\"dir\":\"/var/empty/sshd\",\"gid\":74,\"uid\":74,\"gecos\":\"Privilege-separated SSH\",\"shell\":\"/sbin/nologin\"},\"mail\":{\"dir\":\"/var/spool/mail\",\"gid\":12,\"uid\":8,\"gecos\":\"mail\",\"shell\":\"/sbin/nologin\"},\"dbus\":{\"dir\":\"/\",\"gid\":81,\"uid\":81,\"gecos\":\"System message bus\",\"shell\":\"/sbin/nologin\"},\"root\":{\"dir\":\"/root\",\"gid\":0,\"uid\":0,\"gecos\":\"root\",\"shell\":\"/bin/bash\"},\"qpidd\":{\"dir\":\"/var/lib/qpidd\",\"gid\":499,\"uid\":498,\"gecos\":\"Owner of Qpidd Daemons\",\"shell\":\"/sbin/nologin\"},\"ftp\":{\"dir\":\"/var/ftp\",\"gid\":50,\"uid\":14,\"gecos\":\"FTP User\",\"shell\":\"/sbin/nologin\"},\"adm\":{\"dir\":\"/var/adm\",\"gid\":4,\"uid\":3,\"gecos\":\"adm\",\"shell\":\"/sbin/nologin\"},\"avahi\":{\"dir\":\"/var/run/avahi-daemon\",\"gid\":70,\"uid\":70,\"gecos\":\"Avahi mDNS/DNS-SD Stack\",\"shell\":\"/sbin/nologin\"},\"rpcuser\":{\"dir\":\"/var/lib/nfs\",\"gid\":29,\"uid\":29,\"gecos\":\"RPC Service User\",\"shell\":\"/sbin/nologin\"},\"operator\":{\"dir\":\"/root\",\"gid\":0,\"uid\":11,\"gecos\":\"operator\",\"shell\":\"/sbin/nologin\"},\"ntp\":{\"dir\":\"/etc/ntp\",\"gid\":38,\"uid\":38,\"gecos\":\"\",\"shell\":\"/sbin/nologin\"},\"gdm\":{\"dir\":\"/var/lib/gdm\",\"gid\":42,\"uid\":42,\"gecos\":\"\",\"shell\":\"/sbin/nologin\"},\"postfix\":{\"dir\":\"/var/spool/postfix\",\"gid\":89,\"uid\":89,\"gecos\":\"\",\"shell\":\"/sbin/nologin\"}},\"group\":{\"bin\":{\"gid\":1,\"members\":[\"root\",\"bin\",\"daemon\"]},\"tty\":{\"gid\":5,\"members\":[]},\"dip\":{\"gid\":40,\"members\":[]},\"postdrop\":{\"gid\":90,\"members\":[]},\"uucp\":{\"gid\":14,\"members\":[\"uucp\"]},\"lock\":{\"gid\":54,\"members\":[]},\"haldaemon\":{\"gid\":68,\"members\":[\"haldaemon\"]},\"man\":{\"gid\":15,\"members\":[]},\"cgred\":{\"gid\":496,\"members\":[]},\"localadmin\":{\"gid\":500,\"members\":[]},\"gopher\":{\"gid\":30,\"members\":[]},\"vcsa\":{\"gid\":69,\"members\":[]},\"abrt\":{\"gid\":173,\"members\":[]},\"nfsnobody\":{\"gid\":65534,\"members\":[]},\"daemon\":{\"gid\":2,\"members\":[\"root\",\"bin\",\"daemon\"]},\"saslauth\":{\"gid\":76,\"members\":[]},\"lp\":{\"gid\":7,\"members\":[\"daemon\",\"lp\"]},\"sys\":{\"gid\":3,\"members\":[\"root\",\"bin\",\"adm\"]},\"tcpdump\":{\"gid\":72,\"members\":[]},\"games\":{\"gid\":20,\"members\":[]},\"audio\":{\"gid\":63,\"members\":[]},\"utmp\":{\"gid\":22,\"members\":[]},\"floppy\":{\"gid\":19,\"members\":[]},\"slocate\":{\"gid\":21,\"members\":[]},\"video\":{\"gid\":39,\"members\":[]},\"oprofile\":{\"gid\":16,\"members\":[]},\"desktop_admin_r\":{\"gid\":495,\"members\":[]},\"rpc\":{\"gid\":32,\"members\":[]},\"tape\":{\"gid\":33,\"members\":[]},\"nobody\":{\"gid\":99,\"members\":[]},\"utempter\":{\"gid\":35,\"members\":[]},\"sshd\":{\"gid\":74,\"members\":[]},\"desktop_user_r\":{\"gid\":494,\"members\":[]},\"mail\":{\"gid\":12,\"members\":[\"mail\",\"postfix\"]},\"stapdev\":{\"gid\":498,\"members\":[]},\"disk\":{\"gid\":6,\"members\":[\"root\"]},\"mem\":{\"gid\":8,\"members\":[]},\"dbus\":{\"gid\":81,\"members\":[]},\"stapusr\":{\"gid\":497,\"members\":[]},\"root\":{\"gid\":0,\"members\":[\"root\"]},\"qpidd\":{\"gid\":499,\"members\":[]},\"dialout\":{\"gid\":18,\"members\":[]},\"ftp\":{\"gid\":50,\"members\":[]},\"adm\":{\"gid\":4,\"members\":[\"root\",\"adm\",\"daemon\"]},\"avahi\":{\"gid\":70,\"members\":[]},\"cdrom\":{\"gid\":11,\"members\":[]},\"rpcuser\":{\"gid\":29,\"members\":[]},\"ntp\":{\"gid\":38,\"members\":[]},\"gdm\":{\"gid\":42,\"members\":[]},\"wheel\":{\"gid\":10,\"members\":[\"root\"]},\"kmem\":{\"gid\":9,\"members\":[]},\"users\":{\"gid\":100,\"members\":[]},\"postfix\":{\"gid\":89,\"members\":[]}}},\"macaddress\":\"FA:16:3E:5C:CE:D3\",\"recipes\":[],\"os_version\":\"2.6.32-220.el6.x86_64\",\"uptime_seconds\":655,\"chef_packages\":{\"chef\":{\"version\":\"11.4.0\",\"chef_root\":\"/usr/lib64/ruby/gems/1.8/gems/chef-11.4.0/lib\"},\"ohai\":{\"version\":\"6.16.0\",\"ohai_root\":\"/usr/lib64/ruby/gems/1.8/gems/ohai-6.16.0/lib/ohai\"}},\"counters\":{\"network\":{\"interfaces\":{\"eth0\":{\"rx\":{\"drop\":\"0\",\"bytes\":\"245927\",\"overrun\":\"0\",\"packets\":\"2172\",\"errors\":\"0\"},\"tx\":{\"queuelen\":\"1000\",\"drop\":\"0\",\"collisions\":\"0\",\"bytes\":\"43274\",\"carrier\":\"0\",\"packets\":\"146\",\"errors\":\"0\"}},\"lo\":{\"rx\":{\"drop\":\"0\",\"bytes\":\"328\",\"overrun\":\"0\",\"packets\":\"6\",\"errors\":\"0\"},\"tx\":{\"drop\":\"0\",\"collisions\":\"0\",\"bytes\":\"328\",\"carrier\":\"0\",\"packets\":\"6\",\"errors\":\"0\"}}}}},\"ipaddress\":\"172.30.5.13\"},\"name\":\"sdc15102013d.novalocal\",\"default\":{}}\n");

        // when
        when(propertiesProvider.getProperty(SystemPropertiesProvider.CHEF_SERVER_NODES_PATH)).thenReturn("nodes");
        when(propertiesProvider.getProperty(SystemPropertiesProvider.CHEF_SERVER_URL))
                .thenReturn("http://localhost/");

        //   when(Client.create(clientConfig)).thenReturn(value);
        when(clientConfig.getClient()).thenReturn(client);
        when(client.resource(anyString())).thenReturn(webResource);
        when(webResource.accept(MediaType.APPLICATION_JSON)).thenReturn(builder);
        //  when(webResource.header(anyString(), anyObject())).thenReturn(builder);
        when(builder.get(InputStream.class)).thenReturn(inputStream);

        ChefNode createdChefNode = chefNodeDaoRestImpl.loadNode(chefNodeName);

        // then
        assertNotNull(createdChefNode);
    }

    /**
     * Testing deleteNode.
     * @throws CanNotCallChefException
     * @throws EntityNotFoundException
     */
    @Test
    public void shouldDeleteNode() throws CanNotCallChefException, EntityNotFoundException {
        ChefNodeDaoRestImpl chefNodeDaoRestImpl = new ChefNodeDaoRestImpl();
        SystemPropertiesProvider propertiesProvider = mock(SystemPropertiesProvider.class);
        MixlibAuthenticationDigester mixlibAuthenticationDigester = mock(MixlibAuthenticationDigester.class);
        ChefClientConfig clientConfig = mock(ChefClientConfig.class);

        Client client = mock(Client.class);

        ChefNode chefNode = new ChefNode();
        chefNode.setName("hostname.domain");

        chefNodeDaoRestImpl.setPropertiesProvider(propertiesProvider);
        chefNodeDaoRestImpl.setDigester(mixlibAuthenticationDigester);
        chefNodeDaoRestImpl.setClientConfig(clientConfig);
        WebResource webResource = mock(WebResource.class);
        WebResource.Builder builder = mock(WebResource.Builder.class);

        // when
        when(propertiesProvider.getProperty(anyString())).thenReturn("http://localhost");

        when(clientConfig.getClient()).thenReturn(client);
        when(client.resource(anyString())).thenReturn(webResource);
        when(webResource.accept(MediaType.APPLICATION_JSON)).thenReturn(builder);
        when(builder.type(MediaType.APPLICATION_JSON)).thenReturn(builder);
        when(webResource.header(anyString(), anyObject())).thenReturn(builder);

        // then
        chefNodeDaoRestImpl.deleteNode(chefNode);

        verify(client, times(1)).resource(anyString());
        verify(propertiesProvider, atLeastOnce()).getProperty(anyString());

    }

    /**
     * Testing UpdteNode.
     * @throws CanNotCallChefException
     * @throws EntityNotFoundException
     */
    @Test
    public void shouldUpdateNode() throws CanNotCallChefException, EntityNotFoundException {
        ChefNodeDaoRestImpl chefNodeDaoRestImpl = new ChefNodeDaoRestImpl();
        SystemPropertiesProvider propertiesProvider = mock(SystemPropertiesProvider.class);
        MixlibAuthenticationDigester mixlibAuthenticationDigester = mock(MixlibAuthenticationDigester.class);
        Client client = mock(Client.class);
        ChefClientConfig clientConfig = mock(ChefClientConfig.class);

        ChefNode chefNode = mock(ChefNode.class);
        String payload = "{\"json_class\":\"Chef::Node\",\"override\":{},\"chef_environment\":\"_default\","
                + "\"chef_type\":\"node\",\"normal\":{\"tags\":[]},\"run_list\":[],\"automatic\":{\"os\":\"linux\","
                + "\"cpu\":{\"real\":0,\"0\":{\"model\":\"2\",\"flags\":[\"fpu\",\"de\",\"pse\",\"tsc\",\"msr\",\"pae\",\"mce\","
                + "\"cx8\",\"apic\",\"mtrr\",\"pge\",\"mca\",\"cmov\",\"pse36\",\"clflush\",\"mmx\",\"fxsr\",\"sse\",\"sse2\",\"syscall\",\"nx\",\"lm\",\"up\",\"rep_good\",\"unfair_spinlock\",\"pni\",\"vmx\",\"cx16\",\"popcnt\",\"hypervisor\",\"lahf_lm\"],\"mhz\":\"2394.230\",\"model_name\":\"QEMU Virtual CPU version 1.0\",\"family\":\"6\",\"vendor_id\":\"GenuineIntel\",\"stepping\":\"3\",\"cache_size\":\"4096 KB\"},\"total\":1},\"current_user\":\"root\",\"ip6address\":\"fe80::f816:3eff:fe5c:ced3\",\"virtualization\":{\"role\":\"guest\",\"system\":\"kvm\"},\"languages\":{\"ruby\":{\"bin_dir\":\"/usr/bin\",\"host_os\":\"linux-gnu\",\"target_os\":\"linux\",\"host\":\"x86_64-redhat-linux-gnu\",\"host_cpu\":\"x86_64\",\"version\":\"1.8.7\",\"host_vendor\":\"redhat\",\"target\":\"x86_64-redhat-linux-gnu\",\"gem_bin\":\"/usr/bin/gem\",\"platform\":\"x86_64-linux\",\"release_date\":\"2011-06-30\",\"ruby_bin\":\"/usr/bin/ruby\",\"target_cpu\":\"x86_64\",\"gems_dir\":\"/usr/lib64/ruby/gems/1.8\",\"target_vendor\":\"redhat\"},\"perl\":{\"version\":\"5.10.1\",\"archname\":\"x86_64-linux-thread-multi\"},\"python\":{\"builddate\":\"Dec 7 2011, 20:48:22\",\"version\":\"2.6.6\"},\"lua\":{\"version\":\"5.1.4\"},\"java\":{\"runtime\":{\"name\":\"OpenJDK Runtime Environment (IcedTea6 1.10.4)\",\"build\":\"rhel-1.41.1.10.4.el6-x86_64\"},\"version\":\"1.6.0_22\",\"hotspot\":{\"name\":\"OpenJDK 64-Bit Server VM\",\"build\":\"20.0-b11, mixed mode\"}}},\"lsb\":{\"release\":\"6.2\",\"id\":\"CentOS\",\"description\":\"CentOS release 6.2 (Final)\",\"codename\":\"Final\"},\"domain\":\"novalocal\",\"platform_version\":\"6.2\",\"platform_family\":\"rhel\",\"roles\":[],\"memory\":{\"writeback\":\"0kB\",\"inactive\":\"103500kB\",\"vmalloc_chunk\":\"34359731080kB\",\"dirty\":\"116kB\",\"vmalloc_used\":\"3528kB\",\"page_tables\":\"3984kB\",\"committed_as\":\"193392kB\",\"free\":\"286480kB\",\"slab\":\"27276kB\",\"nfs_unstable\":\"0kB\",\"anon_pages\":\"112640kB\",\"active\":\"70288kB\",\"swap\":{\"free\":\"0kB\",\"cached\":\"0kB\",\"total\":\"0kB\"},\"buffers\":\"11468kB\",\"bounce\":\"0kB\",\"commit_limit\":\"251360kB\",\"vmalloc_total\":\"34359738367kB\",\"mapped\":\"12436kB\",\"slab_reclaimable\":\"7728kB\",\"cached\":\"49652kB\",\"total\":\"502720kB\",\"slab_unreclaim\":\"19548kB\"},\"idletime\":\"10 minutes 11 seconds\",\"command\":{\"ps\":\"ps -ef\"},\"idletime_seconds\":611,\"ohai_time\":2381841405.78531,\"uptime\":\"10 minutes 55 seconds\",\"dmi\":{\"chassis\":{\"lock\":\"Not Present\",\"type\":\"Other\",\"asset_tag\":\"Not Specified\",\"version\":\"Not Specified\",\"power_supply_state\":\"Safe\",\"security_status\":\"Unknown\",\"boot_up_state\":\"Safe\",\"height\":\"Unspecified\",\"all_records\":[{\"Lock\":\"Not Present\",\"size\":\"3\",\"Serial Number\":\"Not Specified\",\"Version\":\"Not Specified\",\"Boot-up State\":\"Safe\",\"Asset Tag\":\"Not Specified\",\"Type\":\"Other\",\"Security Status\":\"Unknown\",\"Number Of Power Cords\":\"Unspecified\",\"application_identifier\":\"Chassis Information\",\"Power Supply State\":\"Safe\",\"record_id\":\"0x0300\",\"OEM Information\":\"0x00000000\",\"Height\":\"Unspecified\",\"Thermal State\":\"Safe\",\"Manufacturer\":\"Bochs\"}],\"serial_number\":\"Not Specified\",\"manufacturer\":\"Bochs\",\"number_of_power_cords\":\"Unspecified\",\"oem_information\":\"0x00000000\",\"thermal_state\":\"Safe\"},\"structures\":{\"size\":\"263\",\"count\":\"10\"},\"dmidecode_version\":\"2.11\",\"processor\":{\"locator\":\"DIMM 0\",\"status\":\"No errors detected\",\"bank_locator\":\"Not Specified\",\"voltage\":\"Unknown\",\"max_speed\":\"2000 MHz\",\"size\":\"512 MB\",\"l2_cache_handle\":\"Not Provided\",\"form_factor\":\"DIMM\",\"data_width\":\"64 bits\",\"type\":\"RAM\",\"range_size\":\"512 MB\",\"total_width\":\"64 bits\",\"physical_device_handle\":\"0x1100\",\"number_of_devices\":\"1\",\"id\":\"23 06 00 00 FD FB 8B 07\",\"maximum_capacity\":\"512 MB\",\"partition_width\":\"1\",\"type_detail\":\"None\",\"l1_cache_handle\":\"Not Provided\",\"partition_row_position\":\"1\",\"physical_array_handle\":\"0x1000\",\"version\":\"Not Specified\",\"use\":\"System Memory\",\"error_correction_type\":\"Multi-bit ECC\",\"starting_address\":\"0x00000000000\",\"all_records\":[{\"Array Handle\":\"0x1000\",\"L1 Cache Handle\":\"Not Provided\",\"Voltage\":\"Unknown\",\"Locator\":\"DIMM 0\",\"ID\":\"23 06 00 00 FD FB 8B 07\",\"size\":\"4\",\"Set\":\"None\",\"Size\":\"512 MB\",\"Number Of Devices\":\"1\",\"Version\":\"Not Specified\",\"Status\":\"No errors detected\",\"Maximum Capacity\":\"512 MB\",\"Partition Width\":\"1\",\"Partition Row Position\":\"1\",\"Type Detail\":\"None\",\"External Clock\":\"Unknown\",\"Memory Array Mapped Address Handle\":\"0x1300\",\"Bank Locator\":\"Not Specified\",\"Total Width\":\"64 bits\",\"Current Speed\":\"2000 MHz\",\"Type\":\"RAM\",\"Data Width\":\"64 bits\",\"L3 Cache Handle\":\"Not Provided\",\"Socket Designation\":\"CPU 1\",\"Max Speed\":\"2000 MHz\",\"Range Size\":\"512 MB\",\"Form Factor\":\"DIMM\",\"Physical Array Handle\":\"0x1000\",\"Use\":\"System Memory\",\"application_identifier\":\"End Of Table\",\"Starting Address\":\"0x00000000000\",\"Ending Address\":\"0x0001FFFFFFF\",\"Physical Device Handle\":\"0x1100\",\"Upgrade\":\"Other\",\"record_id\":\"0x0401\",\"Error Information Handle\":\"0x0307\",\"Manufacturer\":\"Bochs\",\"L2 Cache Handle\":\"Not Provided\",\"Error Correction Type\":\"Multi-bit ECC\",\"Family\":\"Other\",\"Location\":\"Other\"}],\"current_speed\":\"2000 MHz\",\"location\":\"Other\",\"socket_designation\":\"CPU 1\",\"manufacturer\":\"Bochs\",\"family\":\"Other\",\"set\":\"None\",\"memory_array_mapped_address_handle\":\"0x1300\",\"external_clock\":\"Unknown\",\"array_handle\":\"0x1000\",\"upgrade\":\"Other\",\"l3_cache_handle\":\"Not Provided\",\"ending_address\":\"0x0001FFFFFFF\",\"error_information_handle\":\"0x0307\"},\"smbios_version\":\"2.4\",\"bios\":{\"version\":\"Bochs\",\"bios_revision\":\"1.0\",\"all_records\":[{\"size\":\"0\",\"Characteristics\":{\"BIOS characteristics not supported\":null,\"Targeted content distribution is supported\":null},\"Release Date\":\"01/01/2007\",\"Runtime Size\":\"96 kB\",\"Version\":\"Bochs\",\"BIOS Revision\":\"1.0\",\"application_identifier\":\"BIOS Information\",\"record_id\":\"0x0000\",\"ROM Size\":\"64 kB\",\"Vendor\":\"Bochs\",\"Address\":\"0xE8000\"}],\"runtime_size\":\"96 kB\",\"release_date\":\"01/01/2007\",\"address\":\"0xE8000\",\"rom_size\":\"64 kB\",\"vendor\":\"Bochs\"},\"system\":{\"wake_up_type\":\"Power Switch\",\"version\":\"Not Specified\",\"product_name\":\"Bochs\",\"all_records\":[{\"Wake-up Type\":\"Power Switch\",\"Product Name\":\"Bochs\",\"size\":\"1\",\"Serial Number\":\"Not Specified\",\"Version\":\"Not Specified\",\"UUID\":\"A378FD62-BBC8-4BA4-8C8D-8D196789708C\",\"SKU Number\":\"Not Specified\",\"application_identifier\":\"System Information\",\"record_id\":\"0x0100\",\"Manufacturer\":\"Bochs\",\"Family\":\"Not Specified\"}],\"serial_number\":\"Not Specified\",\"manufacturer\":\"Bochs\",\"family\":\"Not Specified\",\"sku_number\":\"Not Specified\",\"uuid\":\"A378FD62-BBC8-4BA4-8C8D-8D196789708C\"}},\"block_device\":{\"ram0\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram1\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram2\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram3\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram4\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram5\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram6\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram7\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram8\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram9\":{\"size\":\"32768\",\"removable\":\"0\"},\"vda\":{\"size\":\"10485760\",\"vendor\":\"6900\",\"removable\":\"0\"},\"loop0\":{\"size\":\"0\",\"removable\":\"0\"},\"loop1\":{\"size\":\"0\",\"removable\":\"0\"},\"loop2\":{\"size\":\"0\",\"removable\":\"0\"},\"loop3\":{\"size\":\"0\",\"removable\":\"0\"},\"loop4\":{\"size\":\"0\",\"removable\":\"0\"},\"loop5\":{\"size\":\"0\",\"removable\":\"0\"},\"loop6\":{\"size\":\"0\",\"removable\":\"0\"},\"loop7\":{\"size\":\"0\",\"removable\":\"0\"},\"ram10\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram11\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram12\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram13\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram14\":{\"size\":\"32768\",\"removable\":\"0\"},\"ram15\":{\"size\":\"32768\",\"removable\":\"0\"}},\"platform\":\"centos\",\"fqdn\":\"sdc15102013d.novalocal\",\"filesystem\":{\"/sys\":{\"mount\":\"/sys\",\"fs_type\":\"sysfs\",\"mount_options\":[\"rw\",\"relatime\"]},\"/dev/vda1\":{\"mount\":\"/\",\"fs_type\":\"ext4\",\"percent_used\":\"44%\",\"kb_size\":\"5159552\",\"mount_options\":[\"rw\"],\"uuid\":\"93ab5295-5527-4919-8098-ce9b49bc7a65\",\"kb_used\":\"2142816\",\"kb_available\":\"2754648\"},\"/proc/bus/usb\":{\"mount\":\"/proc/bus/usb\",\"fs_type\":\"usbfs\",\"mount_options\":[\"rw\",\"relatime\"]},\"tmpfs\":{\"mount\":\"/dev/shm\",\"fs_type\":\"tmpfs\",\"percent_used\":\"0%\",\"kb_size\":\"251360\",\"mount_options\":[\"rw\"],\"kb_used\":\"0\",\"kb_available\":\"251360\"},\"rootfs\":{\"mount\":\"/\",\"fs_type\":\"rootfs\",\"mount_options\":[\"rw\"]},\"sysfs\":{\"mount\":\"/sys\",\"fs_type\":\"sysfs\",\"mount_options\":[\"rw\"]},\"/proc\":{\"mount\":\"/proc\",\"fs_type\":\"proc\",\"mount_options\":[\"rw\",\"relatime\"]},\"devpts\":{\"mount\":\"/dev/pts\",\"fs_type\":\"devpts\",\"mount_options\":[\"rw\",\"gid=5\",\"mode=620\"]},\"/etc/auto.misc\":{\"mount\":\"/misc\",\"fs_type\":\"autofs\",\"mount_options\":[\"rw\",\"relatime\",\"fd=7\",\"pgrp=1402\",\"timeout=300\",\"minproto=5\",\"maxproto=5\",\"indirect\"]},\"none\":{\"mount\":\"/proc/sys/fs/binfmt_misc\",\"fs_type\":\"binfmt_misc\",\"mount_options\":[\"rw\"]},\"udev\":{\"mount\":\"/dev\",\"fs_type\":\"devtmpfs\",\"mount_options\":[\"rw\",\"relatime\",\"size=241740k\",\"nr_inodes=60435\",\"mode=755\"]},\"proc\":{\"mount\":\"/proc\",\"fs_type\":\"proc\",\"mount_options\":[\"rw\"]},\"sunrpc\":{\"mount\":\"/var/lib/nfs/rpc_pipefs\",\"fs_type\":\"rpc_pipefs\",\"mount_options\":[\"rw\"]},\"-hosts\":{\"mount\":\"/net\",\"fs_type\":\"autofs\",\"mount_options\":[\"rw\",\"relatime\",\"fd=13\",\"pgrp=1402\",\"timeout=300\",\"minproto=5\",\"maxproto=5\",\"indirect\"]}},\"kernel\":{\"release\":\"2.6.32-220.el6.x86_64\",\"os\":\"GNU/Linux\",\"machine\":\"x86_64\",\"version\":\"#1 SMP Tue Dec 6 19:48:22 GMT 2011\",\"modules\":{\"virtio_balloon\":{\"size\":\"4347\",\"refcount\":\"0\"},\"microcode\":{\"size\":\"112594\",\"refcount\":\"0\"},\"i2c_core\":{\"size\":\"31276\",\"refcount\":\"1\"},\"mbcache\":{\"size\":\"8144\",\"refcount\":\"1\"},\"ip6table_filter\":{\"size\":\"2889\",\"refcount\":\"1\"},\"i2c_piix4\":{\"size\":\"12608\",\"refcount\":\"0\"},\"ip6t_REJECT\":{\"size\":\"4628\",\"refcount\":\"2\"},\"ata_generic\":{\"size\":\"3837\",\"refcount\":\"0\"},\"virtio_pci\":{\"size\":\"6687\",\"refcount\":\"0\"},\"dm_log\":{\"size\":\"10122\",\"refcount\":\"2\"},\"dm_mod\":{\"size\":\"81500\",\"refcount\":\"2\"},\"nf_conntrack\":{\"size\":\"79453\",\"refcount\":\"2\"},\"ipv6\":{\"size\":\"322029\",\"refcount\":\"29\"},\"virtio_net\":{\"size\":\"15839\",\"refcount\":\"0\"},\"ata_piix\":{\"size\":\"22846\",\"refcount\":\"0\"},\"ip6_tables\":{\"size\":\"19458\",\"refcount\":\"1\"},\"xt_state\":{\"size\":\"1492\",\"refcount\":\"2\"},\"virtio_blk\":{\"size\":\"6671\",\"refcount\":\"2\"},\"nf_conntrack_ipv6\":{\"size\":\"8748\",\"refcount\":\"2\"},\"dm_mirror\":{\"size\":\"14101\",\"refcount\":\"0\"},\"autofs4\":{\"size\":\"26888\",\"refcount\":\"3\"},\"pata_acpi\":{\"size\":\"3701\",\"refcount\":\"0\"},\"dm_region_hash\":{\"size\":\"12170\",\"refcount\":\"1\"},\"nf_defrag_ipv6\":{\"size\":\"12182\",\"refcount\":\"1\"},\"ext4\":{\"size\":\"364410\",\"refcount\":\"1\"},\"virtio_ring\":{\"size\":\"7729\",\"refcount\":\"4\"},\"jbd2\":{\"size\":\"88738\",\"refcount\":\"1\"},\"sunrpc\":{\"size\":\"243758\",\"refcount\":\"1\"},\"virtio\":{\"size\":\"4890\",\"refcount\":\"4\"}},\"name\":\"Linux\"},\"hostname\":\"sdc15102013d\",\"network\":{\"default_interface\":\"eth0\",\"interfaces\":{\"eth0\":{\"type\":\"eth\",\"addresses\":{\"172.30.5.13\":{\"scope\":\"Global\",\"netmask\":\"255.255.255.0\",\"family\":\"inet\",\"broadcast\":\"172.30.5.255\",\"prefixlen\":\"24\"},\"fe80::f816:3eff:fe5c:ced3\":{\"scope\":\"Link\",\"family\":\"inet6\",\"prefixlen\":\"64\"},\"FA:16:3E:5C:CE:D3\":{\"family\":\"lladdr\"}},\"arp\":{\"172.30.5.1\":\"54:52:00:37:68:64\"},\"flags\":[\"BROADCAST\",\"MULTICAST\",\"UP\",\"LOWER_UP\"],\"number\":\"0\",\"routes\":[{\"scope\":\"link\",\"destination\":\"172.30.5.0/24\",\"proto\":\"kernel\",\"src\":\"172.30.5.13\",\"family\":\"inet\"},{\"scope\":\"link\",\"destination\":\"169.254.0.0/16\",\"family\":\"inet\",\"metric\":\"1002\"},{\"via\":\"172.30.5.1\",\"destination\":\"default\",\"family\":\"inet\"},{\"destination\":\"fe80::/64\",\"proto\":\"kernel\",\"family\":\"inet6\",\"metric\":\"256\"}],\"encapsulation\":\"Ethernet\",\"mtu\":\"1500\",\"state\":\"up\"},\"lo\":{\"addresses\":{\"::1\":{\"scope\":\"Node\",\"family\":\"inet6\",\"prefixlen\":\"128\"},\"127.0.0.1\":{\"scope\":\"Node\",\"netmask\":\"255.0.0.0\",\"family\":\"inet\",\"prefixlen\":\"8\"}},\"flags\":[\"LOOPBACK\",\"UP\",\"LOWER_UP\"],\"routes\":[{\"destination\":\"unreachable\",\"family\":\"inet6\",\"metric\":\"1024\"}],\"encapsulation\":\"Loopback\",\"mtu\":\"16436\",\"state\":\"unknown\"}},\"default_gateway\":\"172.30.5.1\"},\"keys\":{\"ssh\":{}},\"etc\":{\"passwd\":{\"bin\":{\"dir\":\"/bin\",\"gid\":1,\"uid\":1,\"gecos\":\"bin\",\"shell\":\"/sbin/nologin\"},\"uucp\":{\"dir\":\"/var/spool/uucp\",\"gid\":14,\"uid\":10,\"gecos\":\"uucp\",\"shell\":\"/sbin/nologin\"},\"haldaemon\":{\"dir\":\"/\",\"gid\":68,\"uid\":68,\"gecos\":\"HAL daemon\",\"shell\":\"/sbin/nologin\"},\"localadmin\":{\"dir\":\"/home/localadmin\",\"gid\":500,\"uid\":500,\"gecos\":\"\",\"shell\":\"/bin/bash\"},\"gopher\":{\"dir\":\"/var/gopher\",\"gid\":30,\"uid\":13,\"gecos\":\"gopher\",\"shell\":\"/sbin/nologin\"},\"vcsa\":{\"dir\":\"/dev\",\"gid\":69,\"uid\":69,\"gecos\":\"virtual console memory owner\",\"shell\":\"/sbin/nologin\"},\"abrt\":{\"dir\":\"/etc/abrt\",\"gid\":173,\"uid\":173,\"gecos\":\"\",\"shell\":\"/sbin/nologin\"},\"nfsnobody\":{\"dir\":\"/var/lib/nfs\",\"gid\":65534,\"uid\":65534,\"gecos\":\"Anonymous NFS User\",\"shell\":\"/sbin/nologin\"},\"daemon\":{\"dir\":\"/sbin\",\"gid\":2,\"uid\":2,\"gecos\":\"daemon\",\"shell\":\"/sbin/nologin\"},\"saslauth\":{\"dir\":\"/var/empty/saslauth\",\"gid\":76,\"uid\":499,\"gecos\":\"\\\"Saslauthd user\\\"\",\"shell\":\"/sbin/nologin\"},\"lp\":{\"dir\":\"/var/spool/lpd\",\"gid\":7,\"uid\":4,\"gecos\":\"lp\",\"shell\":\"/sbin/nologin\"},\"tcpdump\":{\"dir\":\"/\",\"gid\":72,\"uid\":72,\"gecos\":\"\",\"shell\":\"/sbin/nologin\"},\"games\":{\"dir\":\"/usr/games\",\"gid\":100,\"uid\":12,\"gecos\":\"games\",\"shell\":\"/sbin/nologin\"},\"halt\":{\"dir\":\"/sbin\",\"gid\":0,\"uid\":7,\"gecos\":\"halt\",\"shell\":\"/sbin/halt\"},\"shutdown\":{\"dir\":\"/sbin\",\"gid\":0,\"uid\":6,\"gecos\":\"shutdown\",\"shell\":\"/sbin/shutdown\"},\"oprofile\":{\"dir\":\"/home/oprofile\",\"gid\":16,\"uid\":16,\"gecos\":\"Special user account to be used by OProfile\",\"shell\":\"/sbin/nologin\"},\"rpc\":{\"dir\":\"/var/cache/rpcbind\",\"gid\":32,\"uid\":32,\"gecos\":\"Rpcbind Daemon\",\"shell\":\"/sbin/nologin\"},\"nobody\":{\"dir\":\"/\",\"gid\":99,\"uid\":99,\"gecos\":\"Nobody\",\"shell\":\"/sbin/nologin\"},\"sync\":{\"dir\":\"/sbin\",\"gid\":0,\"uid\":5,\"gecos\":\"sync\",\"shell\":\"/bin/sync\"},\"sshd\":{\"dir\":\"/var/empty/sshd\",\"gid\":74,\"uid\":74,\"gecos\":\"Privilege-separated SSH\",\"shell\":\"/sbin/nologin\"},\"mail\":{\"dir\":\"/var/spool/mail\",\"gid\":12,\"uid\":8,\"gecos\":\"mail\",\"shell\":\"/sbin/nologin\"},\"dbus\":{\"dir\":\"/\",\"gid\":81,\"uid\":81,\"gecos\":\"System message bus\",\"shell\":\"/sbin/nologin\"},\"root\":{\"dir\":\"/root\",\"gid\":0,\"uid\":0,\"gecos\":\"root\",\"shell\":\"/bin/bash\"},\"qpidd\":{\"dir\":\"/var/lib/qpidd\",\"gid\":499,\"uid\":498,\"gecos\":\"Owner of Qpidd Daemons\",\"shell\":\"/sbin/nologin\"},\"ftp\":{\"dir\":\"/var/ftp\",\"gid\":50,\"uid\":14,\"gecos\":\"FTP User\",\"shell\":\"/sbin/nologin\"},\"adm\":{\"dir\":\"/var/adm\",\"gid\":4,\"uid\":3,\"gecos\":\"adm\",\"shell\":\"/sbin/nologin\"},\"avahi\":{\"dir\":\"/var/run/avahi-daemon\",\"gid\":70,\"uid\":70,\"gecos\":\"Avahi mDNS/DNS-SD Stack\",\"shell\":\"/sbin/nologin\"},\"rpcuser\":{\"dir\":\"/var/lib/nfs\",\"gid\":29,\"uid\":29,\"gecos\":\"RPC Service User\",\"shell\":\"/sbin/nologin\"},\"operator\":{\"dir\":\"/root\",\"gid\":0,\"uid\":11,\"gecos\":\"operator\",\"shell\":\"/sbin/nologin\"},\"ntp\":{\"dir\":\"/etc/ntp\",\"gid\":38,\"uid\":38,\"gecos\":\"\",\"shell\":\"/sbin/nologin\"},\"gdm\":{\"dir\":\"/var/lib/gdm\",\"gid\":42,\"uid\":42,\"gecos\":\"\",\"shell\":\"/sbin/nologin\"},\"postfix\":{\"dir\":\"/var/spool/postfix\",\"gid\":89,\"uid\":89,\"gecos\":\"\",\"shell\":\"/sbin/nologin\"}},\"group\":{\"bin\":{\"gid\":1,\"members\":[\"root\",\"bin\",\"daemon\"]},\"tty\":{\"gid\":5,\"members\":[]},\"dip\":{\"gid\":40,\"members\":[]},\"postdrop\":{\"gid\":90,\"members\":[]},\"uucp\":{\"gid\":14,\"members\":[\"uucp\"]},\"lock\":{\"gid\":54,\"members\":[]},\"haldaemon\":{\"gid\":68,\"members\":[\"haldaemon\"]},\"man\":{\"gid\":15,\"members\":[]},\"cgred\":{\"gid\":496,\"members\":[]},\"localadmin\":{\"gid\":500,\"members\":[]},\"gopher\":{\"gid\":30,\"members\":[]},\"vcsa\":{\"gid\":69,\"members\":[]},\"abrt\":{\"gid\":173,\"members\":[]},\"nfsnobody\":{\"gid\":65534,\"members\":[]},\"daemon\":{\"gid\":2,\"members\":[\"root\",\"bin\",\"daemon\"]},\"saslauth\":{\"gid\":76,\"members\":[]},\"lp\":{\"gid\":7,\"members\":[\"daemon\",\"lp\"]},\"sys\":{\"gid\":3,\"members\":[\"root\",\"bin\",\"adm\"]},\"tcpdump\":{\"gid\":72,\"members\":[]},\"games\":{\"gid\":20,\"members\":[]},\"audio\":{\"gid\":63,\"members\":[]},\"utmp\":{\"gid\":22,\"members\":[]},\"floppy\":{\"gid\":19,\"members\":[]},\"slocate\":{\"gid\":21,\"members\":[]},\"video\":{\"gid\":39,\"members\":[]},\"oprofile\":{\"gid\":16,\"members\":[]},\"desktop_admin_r\":{\"gid\":495,\"members\":[]},\"rpc\":{\"gid\":32,\"members\":[]},\"tape\":{\"gid\":33,\"members\":[]},\"nobody\":{\"gid\":99,\"members\":[]},\"utempter\":{\"gid\":35,\"members\":[]},\"sshd\":{\"gid\":74,\"members\":[]},\"desktop_user_r\":{\"gid\":494,\"members\":[]},\"mail\":{\"gid\":12,\"members\":[\"mail\",\"postfix\"]},\"stapdev\":{\"gid\":498,\"members\":[]},\"disk\":{\"gid\":6,\"members\":[\"root\"]},\"mem\":{\"gid\":8,\"members\":[]},\"dbus\":{\"gid\":81,\"members\":[]},\"stapusr\":{\"gid\":497,\"members\":[]},\"root\":{\"gid\":0,\"members\":[\"root\"]},\"qpidd\":{\"gid\":499,\"members\":[]},\"dialout\":{\"gid\":18,\"members\":[]},\"ftp\":{\"gid\":50,\"members\":[]},\"adm\":{\"gid\":4,\"members\":[\"root\",\"adm\",\"daemon\"]},\"avahi\":{\"gid\":70,\"members\":[]},\"cdrom\":{\"gid\":11,\"members\":[]},\"rpcuser\":{\"gid\":29,\"members\":[]},\"ntp\":{\"gid\":38,\"members\":[]},\"gdm\":{\"gid\":42,\"members\":[]},\"wheel\":{\"gid\":10,\"members\":[\"root\"]},\"kmem\":{\"gid\":9,\"members\":[]},\"users\":{\"gid\":100,\"members\":[]},\"postfix\":{\"gid\":89,\"members\":[]}}},\"macaddress\":\"FA:16:3E:5C:CE:D3\",\"recipes\":[],\"os_version\":\"2.6.32-220.el6.x86_64\",\"uptime_seconds\":655,\"chef_packages\":{\"chef\":{\"version\":\"11.4.0\",\"chef_root\":\"/usr/lib64/ruby/gems/1.8/gems/chef-11.4.0/lib\"},\"ohai\":{\"version\":\"6.16.0\",\"ohai_root\":\"/usr/lib64/ruby/gems/1.8/gems/ohai-6.16.0/lib/ohai\"}},\"counters\":{\"network\":{\"interfaces\":{\"eth0\":{\"rx\":{\"drop\":\"0\",\"bytes\":\"245927\",\"overrun\":\"0\",\"packets\":\"2172\",\"errors\":\"0\"},\"tx\":{\"queuelen\":\"1000\",\"drop\":\"0\",\"collisions\":\"0\",\"bytes\":\"43274\",\"carrier\":\"0\",\"packets\":\"146\",\"errors\":\"0\"}},\"lo\":{\"rx\":{\"drop\":\"0\",\"bytes\":\"328\",\"overrun\":\"0\",\"packets\":\"6\",\"errors\":\"0\"},\"tx\":{\"drop\":\"0\",\"collisions\":\"0\",\"bytes\":\"328\",\"carrier\":\"0\",\"packets\":\"6\",\"errors\":\"0\"}}}}},\"ipaddress\":\"172.30.5.13\"},\"name\":\"sdc15102013d.novalocal\",\"default\":{}}\n";
        InputStream inputStream = IOUtils.toInputStream(payload);

        chefNodeDaoRestImpl.setPropertiesProvider(propertiesProvider);
        chefNodeDaoRestImpl.setDigester(mixlibAuthenticationDigester);
        chefNodeDaoRestImpl.setClientConfig(clientConfig);
        WebResource webResource = mock(WebResource.class);
        WebResource.Builder builder = mock(WebResource.Builder.class);

        // when
        when(chefNode.toJson()).thenReturn(payload);
        when(propertiesProvider.getProperty(anyString())).thenReturn("http://localhost");
        when(clientConfig.getClient()).thenReturn(client);
        when(client.resource(anyString())).thenReturn(webResource);

        when(webResource.accept(MediaType.APPLICATION_JSON)).thenReturn(builder);
        when(builder.type(MediaType.APPLICATION_JSON)).thenReturn(builder);
        when(builder.entity(payload)).thenReturn(builder);
        when(webResource.header(anyString(), anyObject())).thenReturn(builder);
        when(builder.put(InputStream.class)).thenReturn(inputStream);

        // then
        chefNodeDaoRestImpl.updateNode(chefNode);

        verify(client, times(1)).resource(anyString());
        verify(propertiesProvider, atLeastOnce()).getProperty(anyString());
        verify(chefNode).toJson();
    }
}