Introduce AdminApiWrapper 74/32174/5
authorAleksander Zdyb <a.zdyb@samsung.com>
Tue, 9 Dec 2014 11:37:44 +0000 (12:37 +0100)
committerPawel Wieczorek <p.wieczorek2@samsung.com>
Mon, 29 Dec 2014 09:10:08 +0000 (10:10 +0100)
BaseAdminApiWrapper provides interface for wrapping
functions of cynara-admin API. The wrapping is needed
mainly for testing purposes.

AdminApiWrapper is a target implementation, while
FakeAdminApiWrapper is a mock for testing.

Change-Id: I0b4afb89d8b4bec62693cf070f2a5a90f1148b79

src/cyad/AdminApiWrapper.cpp [new file with mode: 0644]
src/cyad/AdminApiWrapper.h [new file with mode: 0644]
src/cyad/BaseAdminApiWrapper.h [new file with mode: 0644]
src/cyad/CMakeLists.txt
test/cyad/FakeAdminApiWrapper.h [new file with mode: 0644]

diff --git a/src/cyad/AdminApiWrapper.cpp b/src/cyad/AdminApiWrapper.cpp
new file mode 100644 (file)
index 0000000..6a31b4b
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+/**
+ * @file        src/cyad/AdminApiWrapper.cpp
+ * @author      Aleksander Zdyb <a.zdyb@samsung.com>
+ * @version     1.0
+ * @brief       Wrapper around cynara-admin API
+ */
+
+#include <cynara-admin.h>
+
+#include "AdminApiWrapper.h"
+
+namespace Cynara {
+
+AdminApiWrapper::AdminApiWrapper() {}
+
+AdminApiWrapper::~AdminApiWrapper() {}
+
+int AdminApiWrapper::cynara_admin_initialize(struct cynara_admin **pp_cynara_admin) {
+    return ::cynara_admin_initialize(pp_cynara_admin);
+}
+
+int AdminApiWrapper::cynara_admin_finish(struct cynara_admin *p_cynara_admin) {
+    return ::cynara_admin_finish(p_cynara_admin);
+}
+
+int AdminApiWrapper::cynara_admin_set_policies(struct cynara_admin *p_cynara_admin,
+                                               const struct cynara_admin_policy *const *policies) {
+    return ::cynara_admin_set_policies(p_cynara_admin, policies);
+}
+
+int AdminApiWrapper::cynara_admin_set_bucket(struct cynara_admin *p_cynara_admin,
+                                             const char *bucket, int operation, const char *extra) {
+    return ::cynara_admin_set_bucket(p_cynara_admin, bucket, operation, extra);
+}
+
+int AdminApiWrapper::cynara_admin_check(struct cynara_admin *p_cynara_admin,
+                                        const char *start_bucket, const int recursive,
+                                        const char *client, const char *user, const char *privilege,
+                                        int *result, char **result_extra) {
+    return ::cynara_admin_check(p_cynara_admin, start_bucket, recursive, client, user, privilege,
+                                result, result_extra);
+}
+
+} /* namespace Cynara */
diff --git a/src/cyad/AdminApiWrapper.h b/src/cyad/AdminApiWrapper.h
new file mode 100644 (file)
index 0000000..d688271
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+/**
+ * @file        src/cyad/AdminApiWrapper.h
+ * @author      Aleksander Zdyb <a.zdyb@samsung.com>
+ * @version     1.0
+ * @brief       Wrapper around cynara-admin API
+ */
+
+#ifndef SRC_CYAD_ADMINAPIWRAPPER_H_
+#define SRC_CYAD_ADMINAPIWRAPPER_H_
+
+#include "BaseAdminApiWrapper.h"
+
+struct cynara_admin;
+struct cynara_admin_policy;
+
+namespace Cynara {
+
+class AdminApiWrapper : public BaseAdminApiWrapper {
+public:
+    AdminApiWrapper();
+    virtual ~AdminApiWrapper();
+
+    virtual int cynara_admin_initialize(struct cynara_admin **pp_cynara_admin);
+    virtual int cynara_admin_finish(struct cynara_admin *p_cynara_admin);
+    virtual int cynara_admin_set_policies(struct cynara_admin *p_cynara_admin,
+                                          const struct cynara_admin_policy *const *policies);
+    virtual int cynara_admin_set_bucket(struct cynara_admin *p_cynara_admin, const char *bucket,
+                                        int operation, const char *extra);
+    virtual int cynara_admin_check(struct cynara_admin *p_cynara_admin,
+                                   const char *start_bucket, const int recursive,
+                                   const char *client, const char *user, const char *privilege,
+                                   int *result, char **result_extra);
+};
+
+} /* namespace Cynara */
+
+#endif /* SRC_CYAD_ADMINAPIWRAPPER_H_ */
diff --git a/src/cyad/BaseAdminApiWrapper.h b/src/cyad/BaseAdminApiWrapper.h
new file mode 100644 (file)
index 0000000..a24aec2
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+/**
+ * @file        src/cyad/BaseAdminApiWrapper.h
+ * @author      Aleksander Zdyb <a.zdyb@samsung.com>
+ * @version     1.0
+ * @brief       Wrapper around cynara-admin API (base)
+ */
+
+#ifndef SRC_CYAD_BASEADMINAPIWRAPPER_H_
+#define SRC_CYAD_BASEADMINAPIWRAPPER_H_
+
+struct cynara_admin;
+struct cynara_admin_policy;
+
+namespace Cynara {
+
+class BaseAdminApiWrapper {
+public:
+    virtual ~BaseAdminApiWrapper() {};
+    virtual int cynara_admin_initialize(struct cynara_admin **pp_cynara_admin) = 0;
+    virtual int cynara_admin_finish(struct cynara_admin *p_cynara_admin) = 0;
+    virtual int cynara_admin_set_policies(struct cynara_admin *p_cynara_admin,
+                                          const struct cynara_admin_policy *const *policies) = 0;
+    virtual int cynara_admin_set_bucket(struct cynara_admin *p_cynara_admin, const char *bucket,
+                                        int operation, const char *extra) = 0;
+    virtual int cynara_admin_check(struct cynara_admin *p_cynara_admin,
+                                   const char *start_bucket, const int recursive,
+                                   const char *client, const char *user, const char *privilege,
+                                   int *result, char **result_extra) = 0;
+};
+
+} /* namespace Cynara */
+
+#endif /* SRC_CYAD_BASEADMINAPIWRAPPER_H_ */
index 1e379da..1000a0a 100644 (file)
@@ -19,6 +19,7 @@
 SET(CYAD_PATH ${CYNARA_PATH}/cyad)
 
 SET(CYAD_SOURCES
+    ${CYAD_PATH}/AdminApiWrapper.cpp
     ${CYAD_PATH}/main.cpp
     )
 
diff --git a/test/cyad/FakeAdminApiWrapper.h b/test/cyad/FakeAdminApiWrapper.h
new file mode 100644 (file)
index 0000000..8e9b86b
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+/**
+ * @file        test/cyad/FakeAdminApiWrapper.h
+ * @author      Aleksander Zdyb <a.zdyb@samsung.com>
+ * @version     1.0
+ * @brief       Wrapper around cynara-admin API (mock)
+ */
+
+#ifndef TEST_CYAD_FAKEADMINAPIWRAPPER_H_
+#define TEST_CYAD_FAKEADMINAPIWRAPPER_H_
+
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
+#include <cyad/BaseAdminApiWrapper.h>
+
+class FakeAdminApiWrapper : public Cynara::BaseAdminApiWrapper {
+public:
+    using BaseAdminApiWrapper::BaseAdminApiWrapper;
+
+    MOCK_METHOD1(cynara_admin_initialize, int(struct cynara_admin **pp_cynara_admin));
+    MOCK_METHOD1(cynara_admin_finish, int(struct cynara_admin *p_cynara_admin));
+    MOCK_METHOD2(cynara_admin_set_policies, int(struct cynara_admin *p_cynara_admin,
+                 const struct cynara_admin_policy *const *policies));
+    MOCK_METHOD4(cynara_admin_set_bucket, int(struct cynara_admin *p_cynara_admin,
+                 const char *bucket, int operation, const char *extra));
+    MOCK_METHOD8(cynara_admin_check, int(struct cynara_admin *p_cynara_admin,
+                 const char *start_bucket, const int recursive,
+                 const char *client, const char *user, const char *privilege,
+                 int *result, char **result_extra));
+};
+
+#endif /* TEST_CYAD_FAKEADMINAPIWRAPPER_H_ */