From: Aleksander Zdyb Date: Tue, 9 Dec 2014 11:37:44 +0000 (+0100) Subject: Introduce AdminApiWrapper X-Git-Tag: accepted/tizen/common/20150119.084431~33 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4f39cf7bf1c01a29aba8d77c25696bced57004ae;p=platform%2Fcore%2Fsecurity%2Fcynara.git Introduce AdminApiWrapper 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 --- diff --git a/src/cyad/AdminApiWrapper.cpp b/src/cyad/AdminApiWrapper.cpp new file mode 100644 index 0000000..6a31b4b --- /dev/null +++ b/src/cyad/AdminApiWrapper.cpp @@ -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 + * @version 1.0 + * @brief Wrapper around cynara-admin API + */ + +#include + +#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 index 0000000..d688271 --- /dev/null +++ b/src/cyad/AdminApiWrapper.h @@ -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 + * @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 index 0000000..a24aec2 --- /dev/null +++ b/src/cyad/BaseAdminApiWrapper.h @@ -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 + * @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_ */ diff --git a/src/cyad/CMakeLists.txt b/src/cyad/CMakeLists.txt index 1e379da..1000a0a 100644 --- a/src/cyad/CMakeLists.txt +++ b/src/cyad/CMakeLists.txt @@ -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 index 0000000..8e9b86b --- /dev/null +++ b/test/cyad/FakeAdminApiWrapper.h @@ -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 + * @version 1.0 + * @brief Wrapper around cynara-admin API (mock) + */ + +#ifndef TEST_CYAD_FAKEADMINAPIWRAPPER_H_ +#define TEST_CYAD_FAKEADMINAPIWRAPPER_H_ + +#include +#include + +#include + +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_ */