Added sc_add_container to security-container's client 09/29009/3
authorMateusz Malicki <m.malicki2@samsung.com>
Mon, 20 Oct 2014 07:34:33 +0000 (09:34 +0200)
committerMateusz Malicki <m.malicki2@samsung.com>
Mon, 27 Oct 2014 11:09:21 +0000 (12:09 +0100)
[Feature]      Ability to add container through SCS client
[Cause]        Cli need this
[Solution]     Add sc_add_container client function
[Verification] Build, install, run Client/AddContainerTest test

Change-Id: Ie0179cb02bdf1946fb9f8d2fd2f3c303cda401fe

client/security-containers-client-impl.cpp
client/security-containers-client-impl.hpp
client/security-containers-client.cpp
client/security-containers-client.h
tests/unit_tests/client/ut-client.cpp

index a2c51ba..95418b9 100644 (file)
@@ -353,6 +353,14 @@ ScStatus Client::sc_set_active_container(const char* id) noexcept
     return callMethod(HOST_INTERFACE, api::host::METHOD_SET_ACTIVE_CONTAINER, args_in);
 }
 
+ScStatus Client::sc_add_container(const char* id) noexcept
+{
+    assert(id);
+
+    GVariant* args_in = g_variant_new("(s)", id);
+    return callMethod(HOST_INTERFACE, api::host::METHOD_ADD_CONTAINER, args_in);
+}
+
 ScStatus Client::sc_container_dbus_state(ScContainerDbusStateCallback containerDbusStateCallback,
                                          void* data) noexcept
 {
index f1bfacb..3f5a556 100644 (file)
@@ -127,6 +127,11 @@ public:
     ScStatus sc_set_active_container(const char* id) noexcept;
 
     /**
+     *  @see ::sc_add_container
+     */
+    ScStatus sc_add_container(const char* id) noexcept;
+
+    /**
      *  @see ::sc_container_dbus_state
      */
     ScStatus sc_container_dbus_state(ScContainerDbusStateCallback containerDbusStateCallback,
index cb22544..95c2758 100644 (file)
@@ -131,6 +131,11 @@ API ScStatus sc_set_active_container(ScClient client, const char* id)
     return getClient(client).sc_set_active_container(id);
 }
 
+API ScStatus sc_add_container(ScClient client, const char* id)
+{
+    return getClient(client).sc_add_container(id);
+}
+
 API ScStatus sc_container_dbus_state(ScClient client,
                                      ScContainerDbusStateCallback containerDbusStateCallback,
                                      void* data)
index 4d37c3c..1307cb5 100644 (file)
@@ -267,6 +267,15 @@ ScStatus sc_get_container_id_by_pid(ScClient client, int pid, ScString* id);
 ScStatus sc_set_active_container(ScClient client, const char* id);
 
 /**
+ * Create and add container
+ *
+ * @param[in] client security-containers-server's client
+ * @param[in] id container id
+ * @return status of this function call
+ */
+ScStatus sc_add_container(ScClient client, const char* id);
+
+/**
  * Register dbus state change callback function.
  *
  * @note The callback function will be invoked on a different thread.
index 574be39..5db6962 100644 (file)
@@ -188,6 +188,18 @@ BOOST_AUTO_TEST_CASE(SetActiveContainerTest)
     sc_client_free(client);
 }
 
+BOOST_AUTO_TEST_CASE(AddContainerTest)
+{
+    const std::string newActiveContainerId = "";
+
+    ScClient client = sc_client_create();
+    ScStatus status = sc_connect(client);
+    BOOST_REQUIRE_EQUAL(SCCLIENT_SUCCESS, status);
+    status = sc_add_container(client, newActiveContainerId.c_str());
+    BOOST_REQUIRE_EQUAL(SCCLIENT_CUSTOM_ERROR, status);
+    sc_client_free(client);
+}
+
 BOOST_AUTO_TEST_CASE(FileMoveRequestTest)
 {
     const std::string path = "/tmp/fake_path";