Skip to content
Snippets Groups Projects
Commit 44718b20 authored by Florian Spreckelsen's avatar Florian Spreckelsen
Browse files

Merge branch 'f-dot-in-username' into 'dev'

Add tests for user creation/deletion/retrieval

See merge request !23
parents a18667b9 bde9152d
No related branches found
No related tags found
1 merge request!23Add tests for user creation/deletion/retrieval
Pipeline #25406 failed
...@@ -7,7 +7,7 @@ COPY .docker/wait-for-it.sh /wait-for-it.sh ...@@ -7,7 +7,7 @@ COPY .docker/wait-for-it.sh /wait-for-it.sh
WORKDIR /libcaosdb/ WORKDIR /libcaosdb/
RUN mkdir build RUN mkdir build
WORKDIR /libcaosdb/build WORKDIR /libcaosdb/build
RUN conan create .. -s "compiler.libcxx=libstdc++11" RUN conan create -s "compiler.libcxx=libstdc++11" -o caosdb:build_acm=True .. "caosdb/$(conan inspect --raw version ..)@_/_"
COPY . /caosdb-cppinttest COPY . /caosdb-cppinttest
WORKDIR /caosdb-cppinttest WORKDIR /caosdb-cppinttest
......
...@@ -72,6 +72,10 @@ build-testenv: &build-testenv ...@@ -72,6 +72,10 @@ build-testenv: &build-testenv
stage: setup stage: setup
timeout: 2h timeout: 2h
needs: [] needs: []
only:
- pipelines
- schedules
- web
script: script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
...@@ -118,17 +122,21 @@ test: ...@@ -118,17 +122,21 @@ test:
- job: build-test - job: build-test
script: script:
- echo $PWD - echo $PWD
- F_BRANCH="${F_BRANCH:-$CI_COMMIT_REF_NAME}" ;
- echo "F_BRANCH = $F_BRANCH"
- echo "CAOSDB_TAG = $CAOSDB_TAG"
- echo "DEPLOY_REF = $DEPLOY_REF"
- ls -la - ls -la
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- if [[ "$CAOSDB_TAG" == "" ]]; then - if [ -z "$CAOSDB_TAG" ]; then
if echo "$F_BRANCH" | grep -c "^f-" ; then if echo "$F_BRANCH" | grep -c "^f-" ; then
CAOSDB_TAG=${DEPLOY_REF}_F_${F_BRANCH}; CAOSDB_TAG=${DEPLOY_REF}_F_${F_BRANCH};
docker pull $CI_REGISTRY/caosdb/src/caosdb-deploy:$CAOSDB_TAG || CAOSDB_TAG="${DEFAULT_CAOSDB_TAG}" ; docker pull $CI_REGISTRY/caosdb/src/caosdb-deploy:$CAOSDB_TAG || CAOSDB_TAG="${DEFAULT_CAOSDB_TAG}" ;
elif [ "$F_BRANCH" == "main" ] ; then elif [ "$F_BRANCH" = "main" ] ; then
CAOSDB_TAG=main ; CAOSDB_TAG=main ;
elif [ "$F_BRANCH" == "dev" ] ; then elif [ "$F_BRANCH" = "dev" ] ; then
CAOSDB_TAG=dev ; CAOSDB_TAG=dev ;
else else
CAOSDB_TAG="${DEFAULT_CAOSDB_TAG}" ; CAOSDB_TAG="${DEFAULT_CAOSDB_TAG}" ;
......
...@@ -6,3 +6,6 @@ gtest/1.11.0 ...@@ -6,3 +6,6 @@ gtest/1.11.0
[generators] [generators]
cmake cmake
[options]
caosdb:build_acm=True
...@@ -29,8 +29,10 @@ set(test_cases ...@@ -29,8 +29,10 @@ set(test_cases
test_transaction test_transaction
test_ccaosdb test_ccaosdb
test_issues test_issues
test_user
) )
add_compile_definitions(BUILD_ACM)
include(CheckCXXCompilerFlag) include(CheckCXXCompilerFlag)
include(CheckCCompilerFlag) include(CheckCCompilerFlag)
......
...@@ -45,4 +45,12 @@ ...@@ -45,4 +45,12 @@
throw; \ throw; \
}, \ }, \
exeption_type) exeption_type)
#define EXPECT_THROW_STARTS_WITH(statement, exception_type, pattern) \
EXPECT_THROW( \
try { statement; } catch (const exception_type &e) { \
auto pat_s = std::string(pattern); \
EXPECT_EQ(std::string(e.what()).substr(0, pat_s.size()), pat_s); \
throw; \
}, \
exception_type)
#endif #endif
/*
* This file is a part of the CaosDB Project.
*
* Copyright (C) 2022 Timm Fitschen <t.fitschen@indiscale.com>
* Copyright (C) 2022 IndiScale GmbH <info@indiscale.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#include "caosdb/acm/user.h" // for User
#include "caosdb/connection.h" // for Connection, VersionInfo, path
#include "caosdb/exceptions.h" // for TransactionError
#include "caosdb_test_utility.h" // for EXPECT_THROW_MESSAGE
#include <gtest/gtest-message.h> // for Message
#include <gtest/gtest-test-part.h> // for SuiteApiResolver, TestPartR...
#include <gtest/gtest_pred_impl.h> // for Test, TestInfo, TEST, EXPEC...
#include <memory> // for allocator, unique_ptr, __sh...
#include <string> // for stoi, string
namespace caosdb::connection {
using caosdb::acm::User;
TEST(test_user, test_create_single_user_failure_invalid_name) {
auto connection = ConnectionManager::GetDefaultConnection();
User user("CaosDB", "-user1");
EXPECT_THROW_STARTS_WITH(
connection->CreateSingleUser(user), caosdb::exceptions::Exception,
"The attempt to execute this transaction was not successful because an error occured in the "
"transport or RPC protocol layer. Original error: 2 - The user name does not comply with the "
"current policies for user names:");
}
TEST(test_user, test_create_single_user_failure_invalid_password) {
auto connection = ConnectionManager::GetDefaultConnection();
User user("CaosDB", "user1");
user.SetPassword("1234");
EXPECT_THROW_STARTS_WITH(
connection->CreateSingleUser(user), caosdb::exceptions::Exception,
"The attempt to execute this transaction was not successful because an error occured in the "
"transport or RPC protocol layer. Original error: 2 - The password does not comply with the "
"current policies for passwords: ");
}
TEST(test_user, test_create_single_user_success) {
auto connection = ConnectionManager::GetDefaultConnection();
User user("CaosDB", "user1");
user.SetPassword("Password1!");
connection->CreateSingleUser(user);
auto re = connection->RetrieveSingleUser("CaosDB", "user1");
EXPECT_EQ(re.GetName(), user.GetName());
connection->DeleteSingleUser("CaosDB", "user1");
EXPECT_THROW_MESSAGE(
connection->RetrieveSingleUser("CaosDB", "user1"), caosdb::exceptions::Exception,
"The attempt to execute this transaction was not successful because an error occured in the "
"transport or RPC protocol layer. Original error: 5 - This account does not exist.");
}
} // namespace caosdb::connection
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment