From: Orit Wasserman Date: Thu, 12 Apr 2018 13:37:36 +0000 (+0300) Subject: rgw: add test for librgw_admin_user X-Git-Tag: v14.0.0~37^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=142ce78fa4c2bd92e29a69bff182a0872e66d04e;p=ceph.git rgw: add test for librgw_admin_user Signed-off-by: Orit Wasserman --- diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt index 36ddafd98dc2..535de68f0567 100644 --- a/src/test/CMakeLists.txt +++ b/src/test/CMakeLists.txt @@ -100,6 +100,11 @@ if(WITH_RADOSGW) target_link_libraries(test_build_librgw rgw_a pthread ${CRYPTO_LIBS} ${EXTRALIBS}) endif(WITH_RADOSGW) +if(WITH_RADOSGW) + add_executable(test_build_librgw_admin_user buildtest_skeleton.cc) + target_link_libraries(test_build_librgw_admin_user pthread ${CRYPTO_LIBS} ${EXTRALIBS}) +endif(WITH_RADOSGW) + if(WITH_LIBCEPHFS) # From src/test/Makefile-client.am: I dont get this one... testing the osdc build but link in libcephfs? add_executable(test_build_libcephfs buildtest_skeleton.cc) @@ -383,6 +388,18 @@ target_link_libraries(test_rgw_ldap ${UNITTEST_LIBS} ) +# unittest_librgw_admin_user +add_executable(ceph_test_librgw_admin_user test_librgw_admin_user.cc) +set_target_properties(ceph_test_librgw_admin_user PROPERTIES COMPILE_FLAGS ${UNITTEST_CXX_FLAGS}) +target_link_libraries(ceph_test_librgw_admin_user + rgw_admin_user + cls_otp_client + librados + ceph-common + ${UNITTEST_LIBS} + ${EXTRALIBS} + ) + endif(${WITH_RADOSGW}) # ceph_multi_stress_watch diff --git a/src/test/test_librgw_admin_user.cc b/src/test/test_librgw_admin_user.cc new file mode 100644 index 000000000000..6b9df1cc5f33 --- /dev/null +++ b/src/test/test_librgw_admin_user.cc @@ -0,0 +1,104 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab +/* + * Ceph - scalable distributed file system + * + * Copyright (C) 2015 Red Hat, Inc. + * + * This is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software + * Foundation. See file COPYING. + * + */ + +#include +#include "gtest/gtest.h" +#include "common/ceph_argparse.h" + +#include "include/rgw/librgw_admin_user.h" + +#define dout_subsys ceph_subsys_rgw + +namespace { + librgw_admin_user_t rgw = nullptr; + std::string uid("testuser"); + std::string display_name("testuser"); + std::string access_key(""); + std::string secret_key(""); + std::string email; + std::string caps; + std::string access_str; + bool admin; + bool system_user; + + struct { + int argc; + char **argv; + } saved_args; +} + +TEST(RGWLibAdmin, INIT) { + int ret = librgw_admin_user_create(&rgw, saved_args.argc, saved_args.argv); + ASSERT_EQ(ret, 0); + ASSERT_NE(rgw, nullptr); +} + +TEST(RGWLibAdmin, CREATE) { + int ret = rgw_admin_create_user(rgw, uid.c_str(), display_name.c_str(), + access_key.c_str(), secret_key.c_str(), caps.c_str(), access_str.c_str(), email.c_str(), + admin, system_user); + ASSERT_EQ(ret, 0); +} + +TEST(RGWLibAdmin, INFO) { + struct rgw_user_info user_info; + int ret = rgw_admin_user_info(rgw, uid.c_str(), &user_info); + ASSERT_EQ(ret, 0); +} + +TEST(RGWLibAdmin, SHUTDOWN) { + librgw_admin_user_shutdown(rgw); +} + +int main(int argc, char *argv[]) +{ + char *v{nullptr}; + std::string val; + std::vector args; + + argv_to_vec(argc, const_cast(argv), args); + env_to_vec(args); + + v = getenv("AWS_ACCESS_KEY_ID"); + if (v) { + access_key = v; + } + + v = getenv("AWS_SECRET_ACCESS_KEY"); + if (v) { + secret_key = v; + } + + for (auto arg_iter = args.begin(); arg_iter != args.end();) { + if (ceph_argparse_witharg(args, arg_iter, &val, "--access", + (char*) nullptr)) { + access_key = val; + } else if (ceph_argparse_witharg(args, arg_iter, &val, "--secret", + (char*) nullptr)) { + secret_key = val; + } else if (ceph_argparse_witharg(args, arg_iter, &val, "--uid", + (char*) nullptr)) { + uid = val; + } else { + ++arg_iter; + } + } + + saved_args.argc = argc; + saved_args.argv = argv; + + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} +