diff --git a/wifi_service_unittest.cc b/wifi_service_unittest.cc
index e142d86..cd68eca 100644
--- a/wifi_service_unittest.cc
+++ b/wifi_service_unittest.cc
@@ -17,36 +17,53 @@
 #include "shill/mock_control.h"
 #include "shill/mock_service.h"
 #include "shill/mock_store.h"
+#include "shill/mock_wifi.h"
 #include "shill/property_store_unittest.h"
 #include "shill/shill_event.h"
-#include "shill/wifi.h"
+#include "shill/wpa_supplicant.h"
 
 using std::string;
 using std::vector;
 
 namespace shill {
+using ::testing::NiceMock;
 
 class WiFiServiceTest : public PropertyStoreTest {
  public:
-  WiFiServiceTest() {}
+  WiFiServiceTest() : wifi_(
+      new NiceMock<MockWiFi>(
+          control_interface(),
+          dispatcher(),
+          manager(),
+          "wifi",
+          fake_mac,
+          0)) {}
   virtual ~WiFiServiceTest() {}
+
+ protected:
+  static const char fake_mac[];
+  scoped_refptr<MockWiFi> wifi() { return wifi_; }
+
+ private:
+  scoped_refptr<MockWiFi> wifi_;
 };
 
+// static
+const char WiFiServiceTest::fake_mac[] = "AaBBcCDDeeFF";
+
+MATCHER(WPASecurityArgs, "") {
+  return ContainsKey(arg, wpa_supplicant::kPropertySecurityProtocol) &&
+      ContainsKey(arg, wpa_supplicant::kPropertyPreSharedKey);
+}
+
 TEST_F(WiFiServiceTest, StorageId) {
   vector<uint8_t> ssid(5, 0);
   ssid.push_back(0xff);
-  static const char fake_mac[] = "AaBBcCDDeeFF";
 
-  WiFiRefPtr wifi = new WiFi(control_interface(),
-                             dispatcher(),
-                             manager(),
-                             "wifi",
-                             fake_mac,
-                             0);
   WiFiServiceRefPtr wifi_service = new WiFiService(control_interface(),
                                                    dispatcher(),
                                                    manager(),
-                                                   wifi,
+                                                   wifi(),
                                                    ssid,
                                                    flimflam::kModeManaged,
                                                    "none");
@@ -62,4 +79,18 @@
   EXPECT_NE(id.find(string(flimflam::kModeManaged), mac_pos), string::npos);
 }
 
+TEST_F(WiFiServiceTest, ConnectTask) {
+  vector<uint8_t> ssid(5, 0);
+  WiFiServiceRefPtr wifi_service = new WiFiService(control_interface(),
+                                                   dispatcher(),
+                                                   manager(),
+                                                   wifi(),
+                                                   ssid,
+                                                   flimflam::kModeManaged,
+                                                   flimflam::kSecurityWpa);
+  EXPECT_CALL(*wifi(),
+              ConnectTo(wifi_service.get(), WPASecurityArgs()));
+  wifi_service->ConnectTask();
+}
+
 }  // namespace shill
