shill: Implement CreateProfile, PushProfile, PopProfile
Collateral fixes: Profiles now create a header at the beginning
of the file, and this feature is plumbed down through key_file_store
and glib. InitStorage can be configured to fail if the profile
already exists/doesn't yet exist.
BUG=chromium-os:22221
TEST=New unit tests
Change-Id: Ie7c2d0dee97891b7850cec75b74052fce77eee8f
Reviewed-on: https://gerrit.chromium.org/gerrit/10884
Reviewed-by: mukesh agrawal <quiche@chromium.org>
Reviewed-by: Darin Petkov <petkov@chromium.org>
Tested-by: Paul Stewart <pstew@chromium.org>
diff --git a/key_file_store_unittest.cc b/key_file_store_unittest.cc
index c6e014b..4733ba1 100644
--- a/key_file_store_unittest.cc
+++ b/key_file_store_unittest.cc
@@ -64,6 +64,7 @@
TEST_F(KeyFileStoreTest, OpenClose) {
EXPECT_FALSE(store_.key_file_);
+ EXPECT_FALSE(store_.IsNonEmpty());
ASSERT_TRUE(store_.Open());
EXPECT_TRUE(store_.key_file_);
EXPECT_EQ(1, store_.crypto_.cryptos_.size());
@@ -95,6 +96,7 @@
"[%s]\n"
"[%s]\n",
kGroupA, kGroupB, kGroupC));
+ EXPECT_TRUE(store_.IsNonEmpty());
ASSERT_TRUE(store_.Open());
set<string> groups = store_.GetGroups();
EXPECT_EQ(3, groups.size());
@@ -496,6 +498,20 @@
ASSERT_FALSE(OpenCheckClose(kGroup, kKey1, kValue1));
}
+TEST_F(KeyFileStoreTest, EmptyFile) {
+ ASSERT_TRUE(store_.Open());
+ ASSERT_TRUE(store_.Close());
+ EXPECT_FALSE(store_.IsNonEmpty());
+}
+
+TEST_F(KeyFileStoreTest, SetHeader) {
+ ASSERT_TRUE(store_.Open());
+ ASSERT_TRUE(store_.SetHeader("this is a test"));
+ ASSERT_TRUE(store_.Close());
+ EXPECT_TRUE(store_.IsNonEmpty());
+ ASSERT_TRUE(store_.Open());
+}
+
TEST_F(KeyFileStoreTest, Combo) {
static const char kGroupA[] = "square";
static const char kGroupB[] = "circle";