ghttp.RespondWith(http.StatusOK, expectedNodesData),
				),
			)

			node, err := rackhdapi.GetNodeByDiskCID(cpiConfig, "disk-1234")

			Expect(err).ToNot(HaveOccurred())
			Expect(node).To(Equal(expectedNodes[0]))
		})
	})

	Describe("GetOBMSettings", func() {
		It("returns a node's OBM settings", func() {
			dummy_response_path := "../spec_assets/dummy_one_node_response.json"
			httpResponse := helpers.LoadJSON(dummy_response_path)
			expectedResponse := helpers.LoadNode(dummy_response_path)

			nodeID := "nodeID"
			server.AppendHandlers(
				ghttp.CombineHandlers(
					ghttp.VerifyRequest("GET", fmt.Sprintf("/api/common/nodes/%s", nodeID)),
					ghttp.RespondWith(http.StatusOK, httpResponse),
				),
			)

			response, err := rackhdapi.GetOBMSettings(cpiConfig, nodeID)
			Expect(err).ToNot(HaveOccurred())
			Expect(server.ReceivedRequests()).To(HaveLen(1))
			Expect(response).To(Equal(expectedResponse.OBMSettings))
		})
	})
			It("attaches MAC address information from the RackHD API", func() {
				nodeCatalog := helpers.LoadNodeCatalog("../spec_assets/dummy_node_catalog_response.json")

				prevSpec := bosh.Network{}

				netSpec, err := attachMAC(nodeCatalog.Data.NetworkData.Networks, prevSpec)
				Expect(err).ToNot(HaveOccurred())
				Expect(netSpec.MAC).To(Equal("00:1e:67:c4:e1:a0"))
			})
		})
	})

	Describe("SelectNodeFromRackHD", func() {
		Context("with a nodeID", func() {
			It("selects the node with the nodeID", func() {
				node := helpers.LoadNode("../spec_assets/dummy_create_vm_with_disk_response.json")

				nodeResponse, err := json.Marshal(node)
				Expect(err).ToNot(HaveOccurred())

				server.AppendHandlers(
					ghttp.CombineHandlers(
						ghttp.VerifyRequest("GET", fmt.Sprintf("/api/common/nodes/5665a65a0561790005b77b85")),
						ghttp.RespondWith(http.StatusOK, nodeResponse),
					),
				)

				node, err = SelectNodeFromRackHD(cpiConfig, "5665a65a0561790005b77b85", allowFilter)
				Expect(err).ToNot(HaveOccurred())
				Expect(node.ID).To(Equal("5665a65a0561790005b77b85"))
			})
			Expect(w.Tasks[2].TaskName).To(Equal("Task.Linux.Bootstrap.Ubuntu"))
			Expect(w.Tasks[3].TaskName).To(Equal(r.Name))
		})
	})

	Describe("buildReserveNodeWorkflowOptions", func() {
		var server *ghttp.Server
		var cpiConfig config.Cpi

		BeforeEach(func() {
			server, _, cpiConfig, _ = helpers.SetUp("")
		})

		Context("when the node uses IPMI", func() {
			It("sets the OBM settings to IPMI", func() {
				expectedNode := helpers.LoadNode("../spec_assets/dummy_one_node_with_ipmi_response.json")
				expectedNodeData, err := json.Marshal(expectedNode)
				Expect(err).ToNot(HaveOccurred())

				nodeID := "5665a65a0561790005b77b85"
				server.AppendHandlers(
					ghttp.CombineHandlers(
						ghttp.VerifyRequest("GET", fmt.Sprintf("/api/common/nodes/%s", nodeID)),
						ghttp.RespondWith(http.StatusOK, expectedNodeData),
					),
				)

				ipmiServiceName := rackhdapi.OBMSettingIPMIServiceName
				expectedOptions := reserveNodeWorkflowOptions{
					OBMServiceName: &ipmiServiceName,
				}
				ghttp.CombineHandlers(
					ghttp.VerifyRequest("GET", "/api/common/nodes"),
					ghttp.RespondWith(http.StatusOK, expectedNodesData),
				),
			)

			node, err := rackhdapi.GetNodeByVMCID(cpiConfig, "vm-5678")

			Expect(err).ToNot(HaveOccurred())
			Expect(node).To(Equal(expectedNodes[0]))
		})
	})

	Describe("Getting a single node by nodeID", func() {
		It("returns node with the nodeID specified", func() {
			expectedNode := helpers.LoadNode("../spec_assets/dummy_create_vm_with_disk_response.json")
			expectedNodeData, err := json.Marshal(expectedNode)
			Expect(err).ToNot(HaveOccurred())
			server.AppendHandlers(
				ghttp.CombineHandlers(
					ghttp.VerifyRequest("GET", "/api/common/nodes/5665a65a0561790005b77b85"),
					ghttp.RespondWith(http.StatusOK, expectedNodeData),
				),
			)

			node, err := rackhdapi.GetNode(cpiConfig, "5665a65a0561790005b77b85")

			Expect(err).ToNot(HaveOccurred())
			Expect(node).To(Equal(expectedNode))
		})
	})