cpp: Add first manual tests
* lang/cpp/Makefile.am: Add tests subdir. * lang/cpp/tests/Makefile.am: New. * lang/cpp/tests/README, lang/cpp/tests/run-getkey.cpp, lang/cpp/tests/run-keylist.cpp: New. * configure.ac: Configure tests makefile. -- The autotests for c++ live in lang/qt/tests these tests are more for manual experiments to validate some functionality.
This commit is contained in:
parent
85627e5818
commit
9f85f4967e
@ -896,6 +896,7 @@ AC_CONFIG_FILES(Makefile src/Makefile
|
||||
src/gpgme.h)
|
||||
AC_CONFIG_FILES(src/gpgme-config, chmod +x src/gpgme-config)
|
||||
AC_CONFIG_FILES(lang/cpp/Makefile lang/cpp/src/Makefile)
|
||||
AC_CONFIG_FILES(lang/cpp/tests/Makefile)
|
||||
AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfig-w32.cmake.in)
|
||||
AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfig.cmake.in)
|
||||
AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfigVersion.cmake)
|
||||
|
@ -19,6 +19,6 @@
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA
|
||||
|
||||
SUBDIRS = src
|
||||
SUBDIRS = src tests
|
||||
|
||||
EXTRA_DIST = README
|
||||
|
35
lang/cpp/tests/Makefile.am
Normal file
35
lang/cpp/tests/Makefile.am
Normal file
@ -0,0 +1,35 @@
|
||||
# Makefile.am - Makefile for GPGME Cpp tests.
|
||||
# Copyright (C) 2018 Intevation GmbH
|
||||
#
|
||||
# This file is part of GPGME.
|
||||
#
|
||||
# GPGME is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU Lesser General Public License as
|
||||
# published by the Free Software Foundation; either version 2.1 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# GPGME 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 Lesser General
|
||||
# Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
AM_LDFLAGS = -no-install
|
||||
|
||||
LDADD = ../../cpp/src/libgpgmepp.la \
|
||||
../../../src/libgpgme.la @GPG_ERROR_LIBS@ \
|
||||
-lstdc++
|
||||
|
||||
AM_CPPFLAGS = -I$(top_srcdir)/lang/cpp/src -I$(top_builddir)/src \
|
||||
@GPG_ERROR_CFLAGS@ @GPG_ERROR_CFLAGS@ \
|
||||
@LIBASSUAN_CFLAGS@ -DBUILDING_GPGMEPP \
|
||||
-DTOP_SRCDIR="$(top_srcdir)"
|
||||
|
||||
run_getkey_SOURCES = run-getkey.cpp
|
||||
run_keylist_SOURCES = run-keylist.cpp
|
||||
|
||||
noinst_PROGRAMS = run-getkey run-keylist
|
4
lang/cpp/tests/README
Normal file
4
lang/cpp/tests/README
Normal file
@ -0,0 +1,4 @@
|
||||
Tests for the C++ bindings.
|
||||
|
||||
Most autotests for the C++ bindings use the QTest framework
|
||||
and live in lang/qt/tests.
|
144
lang/cpp/tests/run-getkey.cpp
Normal file
144
lang/cpp/tests/run-getkey.cpp
Normal file
@ -0,0 +1,144 @@
|
||||
/*
|
||||
run-getkey.cpp
|
||||
|
||||
This file is part of GpgMEpp's test suite.
|
||||
Copyright (c) 2018 Intevation GmbH
|
||||
|
||||
QGpgME is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License,
|
||||
version 2, as published by the Free Software Foundation.
|
||||
|
||||
QGpgME 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
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
In addition, as a special exception, the copyright holders give
|
||||
permission to link the code of this program with any edition of
|
||||
the Qt library by Trolltech AS, Norway (or with modified versions
|
||||
of Qt that use the same license as Qt), and distribute linked
|
||||
combinations including the two. You must obey the GNU General
|
||||
Public License in all respects for all of the code used other than
|
||||
Qt. If you modify this file, you may extend this exception to
|
||||
your version of the file, but you are not obligated to do so. If
|
||||
you do not wish to do so, delete this exception statement from
|
||||
your version.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "context.h"
|
||||
#include "key.h"
|
||||
|
||||
#include <memory>
|
||||
#include <sstream>
|
||||
#include <iostream>
|
||||
|
||||
using namespace GpgME;
|
||||
|
||||
static int
|
||||
show_usage (int ex)
|
||||
{
|
||||
fputs ("usage: run-getkey [options] [keyIdOrFingerprint]\n\n"
|
||||
"Options:\n"
|
||||
" --verbose run in verbose mode\n"
|
||||
" --openpgp use the OpenPGP protocol (default)\n"
|
||||
" --cms use the CMS protocol\n"
|
||||
" --secret list only secret keys\n"
|
||||
" --with-secret list pubkeys with secret info filled\n"
|
||||
" --local use GPGME_KEYLIST_MODE_LOCAL\n"
|
||||
" --extern use GPGME_KEYLIST_MODE_EXTERN\n"
|
||||
" --sigs use GPGME_KEYLIST_MODE_SIGS\n"
|
||||
" --tofu use GPGME_KEYLIST_MODE_TOFU\n"
|
||||
" --sig-notations use GPGME_KEYLIST_MODE_SIG_NOTATIONS\n"
|
||||
" --ephemeral use GPGME_KEYLIST_MODE_EPHEMERAL\n"
|
||||
" --validate use GPGME_KEYLIST_MODE_VALIDATE\n"
|
||||
" --locate use GPGME_KEYLIST_MODE_LOCATE\n"
|
||||
, stderr);
|
||||
exit (ex);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
int last_argc = -1;
|
||||
Protocol protocol = OpenPGP;
|
||||
unsigned int mode = 0;
|
||||
bool only_secret = false;
|
||||
|
||||
if (argc) {
|
||||
argc--; argv++;
|
||||
}
|
||||
|
||||
while (argc && last_argc != argc ) {
|
||||
last_argc = argc;
|
||||
if (!strcmp (*argv, "--")) {
|
||||
argc--; argv++;
|
||||
break;
|
||||
} else if (!strcmp (*argv, "--help")) {
|
||||
show_usage (0);
|
||||
} else if (!strcmp (*argv, "--openpgp")) {
|
||||
protocol = OpenPGP;
|
||||
argc--; argv++;
|
||||
} else if (!strcmp (*argv, "--cms")) {
|
||||
protocol = CMS;
|
||||
argc--; argv++;
|
||||
} else if (!strcmp (*argv, "--secret")) {
|
||||
only_secret = true;
|
||||
argc--; argv++;
|
||||
} else if (!strcmp (*argv, "--local")) {
|
||||
mode |= KeyListMode::Local;
|
||||
argc--; argv++;
|
||||
} else if (!strcmp (*argv, "--extern")) {
|
||||
mode |= KeyListMode::Extern;
|
||||
argc--; argv++;
|
||||
}else if (!strcmp (*argv, "--tofu")) {
|
||||
mode |= KeyListMode::WithTofu;
|
||||
argc--; argv++;
|
||||
} else if (!strcmp (*argv, "--sigs")) {
|
||||
mode |= KeyListMode::Signatures;
|
||||
argc--; argv++;
|
||||
} else if (!strcmp (*argv, "--sig-notations")) {
|
||||
mode |= KeyListMode::SignatureNotations;
|
||||
argc--; argv++;
|
||||
} else if (!strcmp (*argv, "--ephemeral")) {
|
||||
mode |= KeyListMode::Ephemeral;
|
||||
argc--; argv++;
|
||||
} else if (!strcmp (*argv, "--validate")) {
|
||||
mode |= KeyListMode::Validate;
|
||||
argc--; argv++;
|
||||
} else if (!strcmp (*argv, "--locate")) {
|
||||
argc--; argv++;
|
||||
mode |= KeyListMode::Locate;
|
||||
} else if (!strncmp (*argv, "--", 2)) {
|
||||
show_usage (1);
|
||||
}
|
||||
}
|
||||
|
||||
if (argc != 1) {
|
||||
show_usage (1);
|
||||
}
|
||||
|
||||
GpgME::initializeLibrary();
|
||||
auto ctx = std::unique_ptr<Context> (Context::createForProtocol(protocol));
|
||||
if (!ctx) {
|
||||
std::cerr << "Failed to get Context";
|
||||
return -1;
|
||||
}
|
||||
ctx->setKeyListMode (mode);
|
||||
Error err;
|
||||
const GpgME::Key key = ctx->key (*argv, err, only_secret);
|
||||
std::stringstream ss;
|
||||
|
||||
ss << "Key " << key << " Err: " << err.asString() << "\n";
|
||||
|
||||
std::cout << ss.str();
|
||||
|
||||
return 0;
|
||||
}
|
151
lang/cpp/tests/run-keylist.cpp
Normal file
151
lang/cpp/tests/run-keylist.cpp
Normal file
@ -0,0 +1,151 @@
|
||||
/*
|
||||
run-keylist.cpp
|
||||
|
||||
This file is part of GpgMEpp's test suite.
|
||||
Copyright (c) 2018 Intevation GmbH
|
||||
|
||||
QGpgME is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License,
|
||||
version 2, as published by the Free Software Foundation.
|
||||
|
||||
QGpgME 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
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
In addition, as a special exception, the copyright holders give
|
||||
permission to link the code of this program with any edition of
|
||||
the Qt library by Trolltech AS, Norway (or with modified versions
|
||||
of Qt that use the same license as Qt), and distribute linked
|
||||
combinations including the two. You must obey the GNU General
|
||||
Public License in all respects for all of the code used other than
|
||||
Qt. If you modify this file, you may extend this exception to
|
||||
your version of the file, but you are not obligated to do so. If
|
||||
you do not wish to do so, delete this exception statement from
|
||||
your version.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "context.h"
|
||||
#include "key.h"
|
||||
#include "keylistresult.h"
|
||||
|
||||
#include <memory>
|
||||
#include <sstream>
|
||||
#include <iostream>
|
||||
|
||||
using namespace GpgME;
|
||||
|
||||
static int
|
||||
show_usage (int ex)
|
||||
{
|
||||
fputs ("usage: run-keylist [options] [pattern]\n\n"
|
||||
"Options:\n"
|
||||
" --verbose run in verbose mode\n"
|
||||
" --openpgp use the OpenPGP protocol (default)\n"
|
||||
" --cms use the CMS protocol\n"
|
||||
" --secret list only secret keys\n"
|
||||
" --with-secret list pubkeys with secret info filled\n"
|
||||
" --local use GPGME_KEYLIST_MODE_LOCAL\n"
|
||||
" --extern use GPGME_KEYLIST_MODE_EXTERN\n"
|
||||
" --sigs use GPGME_KEYLIST_MODE_SIGS\n"
|
||||
" --tofu use GPGME_KEYLIST_MODE_TOFU\n"
|
||||
" --sig-notations use GPGME_KEYLIST_MODE_SIG_NOTATIONS\n"
|
||||
" --ephemeral use GPGME_KEYLIST_MODE_EPHEMERAL\n"
|
||||
" --validate use GPGME_KEYLIST_MODE_VALIDATE\n"
|
||||
" --locate use GPGME_KEYLIST_MODE_LOCATE\n"
|
||||
, stderr);
|
||||
exit (ex);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
int last_argc = -1;
|
||||
Protocol protocol = OpenPGP;
|
||||
unsigned int mode = 0;
|
||||
bool only_secret = false;
|
||||
|
||||
if (argc) {
|
||||
argc--; argv++;
|
||||
}
|
||||
|
||||
while (argc && last_argc != argc ) {
|
||||
last_argc = argc;
|
||||
if (!strcmp (*argv, "--")) {
|
||||
argc--; argv++;
|
||||
break;
|
||||
} else if (!strcmp (*argv, "--help")) {
|
||||
show_usage (0);
|
||||
} else if (!strcmp (*argv, "--openpgp")) {
|
||||
protocol = OpenPGP;
|
||||
argc--; argv++;
|
||||
} else if (!strcmp (*argv, "--cms")) {
|
||||
protocol = CMS;
|
||||
argc--; argv++;
|
||||
} else if (!strcmp (*argv, "--secret")) {
|
||||
only_secret = true;
|
||||
argc--; argv++;
|
||||
} else if (!strcmp (*argv, "--local")) {
|
||||
mode |= KeyListMode::Local;
|
||||
argc--; argv++;
|
||||
} else if (!strcmp (*argv, "--extern")) {
|
||||
mode |= KeyListMode::Extern;
|
||||
argc--; argv++;
|
||||
}else if (!strcmp (*argv, "--tofu")) {
|
||||
mode |= KeyListMode::WithTofu;
|
||||
argc--; argv++;
|
||||
} else if (!strcmp (*argv, "--sigs")) {
|
||||
mode |= KeyListMode::Signatures;
|
||||
argc--; argv++;
|
||||
} else if (!strcmp (*argv, "--sig-notations")) {
|
||||
mode |= KeyListMode::SignatureNotations;
|
||||
argc--; argv++;
|
||||
} else if (!strcmp (*argv, "--ephemeral")) {
|
||||
mode |= KeyListMode::Ephemeral;
|
||||
argc--; argv++;
|
||||
} else if (!strcmp (*argv, "--validate")) {
|
||||
mode |= KeyListMode::Validate;
|
||||
argc--; argv++;
|
||||
} else if (!strcmp (*argv, "--locate")) {
|
||||
argc--; argv++;
|
||||
mode |= KeyListMode::Locate;
|
||||
} else if (!strncmp (*argv, "--", 2)) {
|
||||
show_usage (1);
|
||||
}
|
||||
}
|
||||
|
||||
if (argc > 1) {
|
||||
show_usage (1);
|
||||
}
|
||||
|
||||
GpgME::initializeLibrary();
|
||||
auto ctx = std::unique_ptr<Context> (Context::createForProtocol(protocol));
|
||||
if (!ctx) {
|
||||
std::cerr << "Failed to get Context";
|
||||
return -1;
|
||||
}
|
||||
ctx->setKeyListMode (mode);
|
||||
Error err = ctx->startKeyListing (*argv, only_secret);
|
||||
if (err) {
|
||||
std::cout << "Error: " << err.asString() << "\n";
|
||||
return -1;
|
||||
}
|
||||
GpgME::Key key;
|
||||
std::stringstream ss;
|
||||
do {
|
||||
key = ctx->nextKey(err);
|
||||
ss << key << "\n\n";
|
||||
} while (!err && !key.isNull());
|
||||
|
||||
std::cout << ss.str();
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user