2012-03-20 19:40:05 +04:00
/*
2014-03-17 13:38:38 +04:00
* Copyright ( C ) 2012 , 2014 Red Hat , Inc .
2012-03-20 19:40:05 +04:00
*
* This library 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 .
*
* This library 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
2012-09-21 02:30:55 +04:00
* License along with this library . If not , see
2012-07-21 14:06:23 +04:00
* < http : //www.gnu.org/licenses/>.
2012-03-20 19:40:05 +04:00
*/
# include <config.h>
# include <signal.h>
# include "testutils.h"
2012-12-13 22:21:53 +04:00
# include "virerror.h"
2012-12-12 22:06:53 +04:00
# include "viralloc.h"
2012-12-12 21:59:27 +04:00
# include "virlog.h"
2012-03-20 19:40:05 +04:00
# include "virauthconfig.h"
# define VIR_FROM_THIS VIR_FROM_RPC
2014-02-28 16:16:17 +04:00
VIR_LOG_INIT ( " tests.authconfigtest " ) ;
2012-03-20 19:40:05 +04:00
struct ConfigLookupData {
virAuthConfigPtr config ;
const char * hostname ;
const char * service ;
const char * credname ;
const char * expect ;
} ;
static int testAuthLookup ( const void * args )
{
const struct ConfigLookupData * data = args ;
2020-06-16 15:07:02 +03:00
g_autofree char * actual = NULL ;
2012-03-20 19:40:05 +04:00
int rv ;
rv = virAuthConfigLookup ( data - > config ,
data - > service ,
data - > hostname ,
data - > credname ,
& actual ) ;
if ( rv < 0 )
2019-11-12 23:46:29 +03:00
return - 1 ;
2012-03-20 19:40:05 +04:00
if ( data - > expect ) {
if ( ! actual | |
2015-10-20 19:15:12 +03:00
STRNEQ ( actual , data - > expect ) ) {
2012-03-20 19:40:05 +04:00
VIR_WARN ( " Expected value '%s' for '%s' '%s' '%s', but got '%s' " ,
data - > expect , data - > hostname ,
data - > service , data - > credname ,
NULLSTR ( actual ) ) ;
2019-11-12 23:46:29 +03:00
return - 1 ;
2012-03-20 19:40:05 +04:00
}
} else {
if ( actual ) {
VIR_WARN ( " Did not expect a value for '%s' '%s' '%s', but got '%s' " ,
data - > hostname ,
data - > service , data - > credname ,
actual ) ;
2019-11-12 23:46:29 +03:00
return - 1 ;
2012-03-20 19:40:05 +04:00
}
}
2019-11-12 23:46:29 +03:00
return 0 ;
2012-03-20 19:40:05 +04:00
}
static int
mymain ( void )
{
int ret = 0 ;
virAuthConfigPtr config ;
const char * confdata =
" [credentials-test] \n "
" username=fred \n "
" password=123456 \n "
" \n "
" [credentials-prod] \n "
" username=bar \n "
" password=letmein \n "
" \n "
" [auth-libvirt-test1.example.com] \n "
" credentials=test \n "
" \n "
" [auth-libvirt-test2.example.com] \n "
" credentials=test \n "
" \n "
" [auth-libvirt-demo3.example.com] \n "
" credentials=test \n "
" \n "
" [auth-libvirt-prod1.example.com] \n "
" credentials=prod \n " ;
2020-07-28 21:11:01 +03:00
# define TEST_LOOKUP(config, hostname, service, credname, expect) \
do { \
const struct ConfigLookupData data = { \
config , hostname , service , credname , expect \
} ; \
if ( virTestRun ( " Test Lookup " hostname " - " service " - " credname , \
testAuthLookup , & data ) < 0 ) \
ret = - 1 ; \
} while ( 0 )
# ifndef WIN32
signal ( SIGPIPE , SIG_IGN ) ;
# endif /* WIN32 */
2012-03-20 19:40:05 +04:00
if ( ! ( config = virAuthConfigNewData ( " auth.conf " , confdata , strlen ( confdata ) ) ) )
return EXIT_FAILURE ;
TEST_LOOKUP ( config , " test1.example.com " , " libvirt " , " username " , " fred " ) ;
TEST_LOOKUP ( config , " test1.example.com " , " vnc " , " username " , NULL ) ;
TEST_LOOKUP ( config , " test1.example.com " , " libvirt " , " realm " , NULL ) ;
TEST_LOOKUP ( config , " test66.example.com " , " libvirt " , " username " , NULL ) ;
TEST_LOOKUP ( config , " prod1.example.com " , " libvirt " , " username " , " bar " ) ;
TEST_LOOKUP ( config , " prod1.example.com " , " libvirt " , " password " , " letmein " ) ;
virAuthConfigFree ( config ) ;
2014-03-17 13:38:38 +04:00
return ret = = 0 ? EXIT_SUCCESS : EXIT_FAILURE ;
2012-03-20 19:40:05 +04:00
}
2017-03-29 17:45:42 +03:00
VIR_TEST_MAIN ( mymain )