blob: 9c3de0de626be28ebbd87e23e635710502b49cf9 [file] [log] [blame]
/*
*
* Copyright (c) 2014 The Apache Software Foundation
*
* 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.
*
*/
#include "unit_test.h"
#include "test_tools.h"
#include "qpid/acl/AclLexer.h"
#include <boost/assign.hpp>
using namespace std;
using namespace qpid;
using namespace qpid::acl;
using namespace boost::assign;
namespace qpid {
namespace tests {
QPID_AUTO_TEST_SUITE(AclTestSuite)
#define OBJ_ENUMS(e, s) \
BOOST_CHECK_EQUAL(AclHelper::getObjectTypeStr((e)),(s)); \
BOOST_CHECK_EQUAL(AclHelper::getObjectType((s)),(e))
QPID_AUTO_TEST_CASE(TestLexerObjectEnums) {
BOOST_CHECK_EQUAL(OBJECTSIZE, 7);
OBJ_ENUMS(OBJ_QUEUE, "queue");
OBJ_ENUMS(OBJ_EXCHANGE, "exchange");
OBJ_ENUMS(OBJ_BROKER, "broker");
OBJ_ENUMS(OBJ_LINK, "link");
OBJ_ENUMS(OBJ_METHOD, "method");
OBJ_ENUMS(OBJ_QUERY, "query");
OBJ_ENUMS(OBJ_CONNECTION, "connection");
int maxLen = 0;
for (int i=0; i<acl::OBJECTSIZE; i++) {
int thisLen = AclHelper::getObjectTypeStr( ObjectType(i) ).length();
if (thisLen > maxLen)
maxLen = thisLen;
}
BOOST_CHECK_EQUAL(maxLen, acl::OBJECTTYPE_STR_WIDTH);
}
#define ACT_ENUMS(e, s) \
BOOST_CHECK_EQUAL(AclHelper::getActionStr((e)),(s)); \
BOOST_CHECK_EQUAL(AclHelper::getAction((s)),(e))
QPID_AUTO_TEST_CASE(TestLexerActionEnums) {
BOOST_CHECK_EQUAL(ACTIONSIZE, 12);
ACT_ENUMS(ACT_CONSUME, "consume");
ACT_ENUMS(ACT_PUBLISH, "publish");
ACT_ENUMS(ACT_CREATE, "create");
ACT_ENUMS(ACT_ACCESS, "access");
ACT_ENUMS(ACT_BIND, "bind");
ACT_ENUMS(ACT_UNBIND, "unbind");
ACT_ENUMS(ACT_DELETE, "delete");
ACT_ENUMS(ACT_PURGE, "purge");
ACT_ENUMS(ACT_UPDATE, "update");
ACT_ENUMS(ACT_MOVE, "move");
ACT_ENUMS(ACT_REDIRECT, "redirect");
ACT_ENUMS(ACT_REROUTE, "reroute");
int maxLen = 0;
for (int i=0; i<acl::ACTIONSIZE; i++) {
int thisLen = AclHelper::getActionStr( Action(i) ).length();
if (thisLen > maxLen)
maxLen = thisLen;
}
BOOST_CHECK_EQUAL(maxLen, acl::ACTION_STR_WIDTH);
}
#define PROP_ENUMS(e, s) \
BOOST_CHECK_EQUAL(AclHelper::getPropertyStr((e)),(s)); \
BOOST_CHECK_EQUAL(AclHelper::getProperty((s)),(e))
QPID_AUTO_TEST_CASE(TestLexerPropertyEnums) {
BOOST_CHECK_EQUAL(PROPERTYSIZE, 21);
PROP_ENUMS(PROP_NAME, "name");
PROP_ENUMS(PROP_DURABLE, "durable");
PROP_ENUMS(PROP_OWNER, "owner");
PROP_ENUMS(PROP_ROUTINGKEY, "routingkey");
PROP_ENUMS(PROP_AUTODELETE, "autodelete");
PROP_ENUMS(PROP_EXCLUSIVE, "exclusive");
PROP_ENUMS(PROP_TYPE, "type");
PROP_ENUMS(PROP_ALTERNATE, "alternate");
PROP_ENUMS(PROP_QUEUENAME, "queuename");
PROP_ENUMS(PROP_EXCHANGENAME, "exchangename");
PROP_ENUMS(PROP_SCHEMAPACKAGE, "schemapackage");
PROP_ENUMS(PROP_SCHEMACLASS, "schemaclass");
PROP_ENUMS(PROP_POLICYTYPE, "policytype");
PROP_ENUMS(PROP_PAGING, "paging");
PROP_ENUMS(PROP_HOST, "host");
PROP_ENUMS(PROP_MAXPAGES, "maxpages");
PROP_ENUMS(PROP_MAXPAGEFACTOR, "maxpagefactor");
PROP_ENUMS(PROP_MAXQUEUESIZE, "maxqueuesize");
PROP_ENUMS(PROP_MAXQUEUECOUNT, "maxqueuecount");
PROP_ENUMS(PROP_MAXFILESIZE, "maxfilesize");
PROP_ENUMS(PROP_MAXFILECOUNT, "maxfilecount");
}
#define SPECPROP_ENUMS(e, s) \
BOOST_CHECK_EQUAL(AclHelper::getPropertyStr((e)),(s)); \
BOOST_CHECK_EQUAL(AclHelper::getSpecProperty((s)),(e))
QPID_AUTO_TEST_CASE(TestLexerSpecPropertyEnums) {
BOOST_CHECK_EQUAL(SPECPROPSIZE, 27);
SPECPROP_ENUMS(SPECPROP_NAME, "name");
SPECPROP_ENUMS(SPECPROP_DURABLE, "durable");
SPECPROP_ENUMS(SPECPROP_OWNER, "owner");
SPECPROP_ENUMS(SPECPROP_ROUTINGKEY, "routingkey");
SPECPROP_ENUMS(SPECPROP_AUTODELETE, "autodelete");
SPECPROP_ENUMS(SPECPROP_EXCLUSIVE, "exclusive");
SPECPROP_ENUMS(SPECPROP_TYPE, "type");
SPECPROP_ENUMS(SPECPROP_ALTERNATE, "alternate");
SPECPROP_ENUMS(SPECPROP_QUEUENAME, "queuename");
SPECPROP_ENUMS(SPECPROP_EXCHANGENAME, "exchangename");
SPECPROP_ENUMS(SPECPROP_SCHEMAPACKAGE, "schemapackage");
SPECPROP_ENUMS(SPECPROP_SCHEMACLASS, "schemaclass");
SPECPROP_ENUMS(SPECPROP_POLICYTYPE, "policytype");
SPECPROP_ENUMS(SPECPROP_PAGING, "paging");
SPECPROP_ENUMS(SPECPROP_HOST, "host");
SPECPROP_ENUMS(SPECPROP_MAXQUEUESIZELOWERLIMIT, "queuemaxsizelowerlimit");
SPECPROP_ENUMS(SPECPROP_MAXQUEUESIZEUPPERLIMIT, "queuemaxsizeupperlimit");
SPECPROP_ENUMS(SPECPROP_MAXQUEUECOUNTLOWERLIMIT, "queuemaxcountlowerlimit");
SPECPROP_ENUMS(SPECPROP_MAXQUEUECOUNTUPPERLIMIT, "queuemaxcountupperlimit");
SPECPROP_ENUMS(SPECPROP_MAXFILESIZELOWERLIMIT, "filemaxsizelowerlimit");
SPECPROP_ENUMS(SPECPROP_MAXFILESIZEUPPERLIMIT, "filemaxsizeupperlimit");
SPECPROP_ENUMS(SPECPROP_MAXFILECOUNTLOWERLIMIT, "filemaxcountlowerlimit");
SPECPROP_ENUMS(SPECPROP_MAXFILECOUNTUPPERLIMIT, "filemaxcountupperlimit");
SPECPROP_ENUMS(SPECPROP_MAXPAGESLOWERLIMIT, "pageslowerlimit");
SPECPROP_ENUMS(SPECPROP_MAXPAGESUPPERLIMIT, "pagesupperlimit");
SPECPROP_ENUMS(SPECPROP_MAXPAGEFACTORLOWERLIMIT, "pagefactorlowerlimit");
SPECPROP_ENUMS(SPECPROP_MAXPAGEFACTORUPPERLIMIT, "pagefactorupperlimit");
BOOST_CHECK_EQUAL(AclHelper::getSpecProperty("maxqueuesize"), SPECPROP_MAXQUEUESIZEUPPERLIMIT);
BOOST_CHECK_EQUAL(AclHelper::getSpecProperty("maxqueuecount"), SPECPROP_MAXQUEUECOUNTUPPERLIMIT);
}
#define RESULT_ENUMS(e, s) \
BOOST_CHECK_EQUAL(AclHelper::getAclResultStr((e)),(s)); \
BOOST_CHECK_EQUAL(AclHelper::getAclResult((s)),(e))
QPID_AUTO_TEST_CASE(TestLexerResultEnums) {
BOOST_CHECK_EQUAL(RESULTSIZE, 4);
RESULT_ENUMS(ALLOW, "allow");
RESULT_ENUMS(ALLOWLOG, "allow-log");
RESULT_ENUMS(DENY, "deny");
RESULT_ENUMS(DENYLOG, "deny-log");
}
QPID_AUTO_TEST_SUITE_END()
}} // namespace qpid::tests