shill: vpn: Associate VPN device with service and update IP configuration.

BUG=chromium-os:27384,chromium-os:27385
TEST=unit tests

Change-Id: I5b35bebeadd25f50f7044d2e4ec5bc121a56835e
Reviewed-on: https://gerrit.chromium.org/gerrit/17488
Commit-Ready: Darin Petkov <petkov@chromium.org>
Reviewed-by: Darin Petkov <petkov@chromium.org>
Tested-by: Darin Petkov <petkov@chromium.org>
diff --git a/vpn_provider_unittest.cc b/vpn_provider_unittest.cc
index e35f5cf..68eb4be 100644
--- a/vpn_provider_unittest.cc
+++ b/vpn_provider_unittest.cc
@@ -10,6 +10,7 @@
 #include "shill/error.h"
 #include "shill/nice_mock_control.h"
 #include "shill/mock_adaptors.h"
+#include "shill/mock_device_info.h"
 #include "shill/mock_manager.h"
 #include "shill/mock_metrics.h"
 #include "shill/mock_vpn_driver.h"
@@ -25,6 +26,7 @@
  public:
   VPNProviderTest()
       : manager_(&control_, NULL, &metrics_, NULL),
+        device_info_(&control_, NULL, &metrics_, &manager_),
         provider_(&control_, NULL, &metrics_, &manager_) {}
 
   virtual ~VPNProviderTest() {}
@@ -33,6 +35,7 @@
   NiceMockControl control_;
   MockMetrics metrics_;
   MockManager manager_;
+  MockDeviceInfo device_info_;
   VPNProvider provider_;
 };
 
@@ -60,6 +63,8 @@
   Error e;
   args.SetString(flimflam::kTypeProperty, flimflam::kTypeVPN);
   args.SetString(flimflam::kProviderTypeProperty, flimflam::kProviderOpenVpn);
+  EXPECT_CALL(manager_, device_info()).WillOnce(Return(&device_info_));
+  EXPECT_CALL(manager_, RegisterService(_));
   VPNServiceRefPtr service = provider_.GetService(args, &e);
   EXPECT_TRUE(e.IsSuccess());
   EXPECT_TRUE(service);