2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 * @file TestSuite06.cpp
20 * @brief Test cases for AceDAO implementation.
26 #include <dpl/foreach.h>
27 #include <dpl/test/test_runner.h>
29 #include <ace-dao-rw/AceDAO.h>
30 #include <ace/Attribute.h>
31 #include <ace/Preference.h>
32 #include <ace/SettingsLogic.h>
34 #define TEST_WIDGET_HANDLE 23
36 #define TESTSUITE06(n) \
37 RUNNER_TEST(ts06_ace_dao_ ## n)
41 AceDB::AceDAO::clearWidgetDevCapSettings(); \
42 AceDB::AceDAO::clearDevCapSettings(); \
45 using namespace AceDB;
47 int operator==(const Attribute& left, const Attribute& right)
49 return ( (*left.getName() == *right.getName()));
52 bool UserSettingsAgreed(std::list<PermissionTriple>* expected,
53 std::list<PermissionTriple>* allRules)
55 if (allRules->empty() && expected->empty())
60 std::list<PermissionTriple>::iterator itA;
61 FOREACH(itE, *expected)
63 if (itE->devCap.empty()){
64 return false; //some error occur
67 for (itA = allRules->begin(); itA != allRules->end(); ++itA){
68 if (itA->appId == itE->appId &&
69 itA->devCap == itE->devCap)
71 if (itA->access == itE->access){
75 return false; //optimization
80 if (itA == allRules->end())
82 if (itE->access == Preference::PREFERENCE_DEFAULT)
83 { // this value is not set in DB
86 //if we are here -it means that expected values doesnt exist in DB
91 continue; //go to next expected attr
95 //it means that all required values exist in DB
100 bool UserSettingNotStored(std::list<PermissionTriple>* userSettings,
102 WidgetHandle handler,
105 if (userSettings->empty())
110 FOREACH(iter, *userSettings)
112 if (iter->appId == handler && iter->devCap == res){
113 if (iter->access == pref){
114 return false; //this value has been saved
117 continue; //value has been saved
127 bool ResourceSettingsAgreed(
128 std::list< std::pair<const std::string*,Preference> > *expected,
129 std::map<std::string, Preference>* allRules)
131 std::list< std::pair<const std::string*,Preference> >::iterator itE;
132 std::map<std::string, Preference>::iterator itA;
134 FOREACH(itE, *expected)
136 itA = allRules->find(*(itE->first));
137 if (itA != allRules->end() && itA->second == itE->second)
150 bool ResourceSettingsEqual(
151 std::list< std::pair<const std::string*,Preference> > * actual,
152 std::map<std::string, Preference>* expected)
155 FOREACH(iterA, *actual)
157 FOREACH(iterE, *expected)
159 if (*(iterA->first) == iterE->first &&
160 iterA->second == iterE->second)
175 //bool VSPAssertEqual(Verdict actual, Verdict expected){
176 // return (actual == expected);
180 bool AttributeEqual(AttributeSet actual, AttributeSet expected){
181 return (actual == expected);
184 bool ResourceSettingEqual(std::map<std::string, Preference>* rSettings,
188 std::map<std::string, Preference>::iterator iter = rSettings->find(res);
190 if (iter != rSettings->end() && iter->second ==pref)
199 bool UserSettingEqual(std::list<PermissionTriple>* userSettings,
201 WidgetHandle handler,
204 if (userSettings->empty() && pref == Preference::PREFERENCE_DEFAULT)
208 FOREACH(iter, *userSettings)
210 if (iter->devCap.empty())
212 return false; //some error occurred
214 if (iter->appId == handler && iter->devCap == res){
215 if (iter->access == pref)
229 RUNNER_TEST_GROUP_INIT(ACE_TEST_SUITE_06)
231 //Test does verdict PERMIT is saved when validity is once
234 AttributeSet attributeSet;
235 std::string tmp("atrS");
236 std::string tmpValue("Buu");
237 BaseAttributePtr atr(new Attribute(&tmp,
238 Attribute::Match::Equal,
239 Attribute::Type::Subject));
240 DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
241 attributeSet.insert(atr);
243 AceDAO::setPolicyResult(attributeSet,
244 ExtendedPolicyResult(PolicyEffect::PERMIT));
245 OptionalExtendedPolicyResult opt =
246 AceDAO::getPolicyResult(attributeSet);
248 PolicyResult effect(PolicyEffect::DENY);
250 effect = opt->policyResult;
253 RUNNER_ASSERT(effect == PolicyEffect::PERMIT);
258 AttributeSet attributeSet;
259 std::string tmp("atrS");
260 std::string tmpValue("Buu");
261 BaseAttributePtr atr(new Attribute(&tmp,
262 Attribute::Match::Equal,
263 Attribute::Type::Subject));
264 DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
265 attributeSet.insert(atr);
267 AceDAO::setPolicyResult(attributeSet,
268 ExtendedPolicyResult(PolicyEffect::DENY));
269 OptionalExtendedPolicyResult opt = AceDAO::getPolicyResult(attributeSet);
271 PolicyResult effect(PolicyEffect::PERMIT);
273 effect = opt->policyResult;
276 RUNNER_ASSERT(effect == PolicyEffect::DENY);
281 AttributeSet attributeSet;
282 std::string tmp("atrS");
283 std::string tmpValue("Buu");
284 BaseAttributePtr atr(new Attribute(&tmp,
285 Attribute::Match::Equal,
286 Attribute::Type::Subject));
287 DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
288 attributeSet.insert(atr);
290 AceDAO::setPolicyResult(attributeSet,
291 ExtendedPolicyResult(PolicyEffect::PROMPT_ONESHOT));
292 OptionalExtendedPolicyResult opt = AceDAO::getPolicyResult(attributeSet);
294 PolicyResult effect(PolicyEffect::DENY);
296 effect = opt->policyResult;
299 RUNNER_ASSERT(effect == PolicyEffect::PROMPT_ONESHOT);
304 AttributeSet attributeSet;
305 std::string tmp("atrS");
306 std::string tmpValue("Buu");
307 BaseAttributePtr atr(new Attribute(&tmp,
308 Attribute::Match::Equal,
309 Attribute::Type::Subject));
310 DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
311 attributeSet.insert(atr);
313 AceDAO::setPolicyResult(attributeSet,
314 ExtendedPolicyResult(PolicyEffect::PROMPT_SESSION));
315 OptionalExtendedPolicyResult opt = AceDAO::getPolicyResult(attributeSet);
317 PolicyResult effect(PolicyEffect::DENY);
319 effect = opt->policyResult;
322 RUNNER_ASSERT(effect == PolicyEffect::PROMPT_SESSION);
327 AttributeSet attributeSet;
328 std::string tmp("atrS");
329 std::string tmpValue("Buu");
330 BaseAttributePtr atr(new Attribute(&tmp,
331 Attribute::Match::Equal,
332 Attribute::Type::Subject));
333 DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
334 attributeSet.insert(atr);
336 AceDAO::setPolicyResult(attributeSet,
337 ExtendedPolicyResult(PolicyEffect::PROMPT_BLANKET));
338 OptionalExtendedPolicyResult opt = AceDAO::getPolicyResult(attributeSet);
340 PolicyResult effect(PolicyEffect::DENY);
342 effect = opt->policyResult;
345 RUNNER_ASSERT(effect == PolicyEffect::PROMPT_BLANKET);
350 AttributeSet attributeSet;
351 std::string tmp("atrS");
352 std::string tmpValue("Buu");
353 BaseAttributePtr atr(new Attribute(&tmp,
354 Attribute::Match::Equal,
355 Attribute::Type::Subject));
356 DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
357 attributeSet.insert(atr);
359 AceDAO::setPolicyResult(attributeSet,
360 ExtendedPolicyResult(PolicyDecision::NOT_APPLICABLE));
361 OptionalExtendedPolicyResult opt = AceDAO::getPolicyResult(attributeSet);
363 PolicyResult effect(PolicyEffect::DENY);
365 effect = opt->policyResult;
368 RUNNER_ASSERT(effect == PolicyDecision::NOT_APPLICABLE);
373 AttributeSet attributeSet;
374 std::string tmp("atrS");
375 std::string tmpValue("Buu");
376 BaseAttributePtr atr(new Attribute(&tmp,
377 Attribute::Match::Equal,
378 Attribute::Type::Subject));
379 DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
380 attributeSet.insert(atr);
382 AceDAO::setPolicyResult(attributeSet,
383 ExtendedPolicyResult(PolicyResult::UNDETERMINED));
384 OptionalExtendedPolicyResult opt = AceDAO::getPolicyResult(attributeSet);
386 PolicyResult effect(PolicyEffect::DENY);
388 effect = opt->policyResult;
391 RUNNER_ASSERT(effect == PolicyResult::UNDETERMINED);
397 std::string tmp("atrS2");
398 std::string tmpValue("Buu2");
399 std::string session = "jlakjhqrwebn234324987";
401 AceDAO::setPromptDecision(TEST_WIDGET_HANDLE,
403 DPL::FromUTF8String(session),
404 PromptDecision::ALLOW_ALWAYS);
406 OptionalCachedPromptDecision decision =
407 AceDAO::getPromptDecision(TEST_WIDGET_HANDLE,
410 DPL::String session1;
411 PromptDecision dec = PromptDecision::DENY_FOR_SESSION;
412 if (!decision.IsNull()){
413 dec = (*decision).decision;
414 if (!decision.IsNull()) {
415 session1 = *((*decision).session);
418 RUNNER_ASSERT(dec == PromptDecision::ALLOW_ALWAYS);
419 RUNNER_ASSERT(DPL::ToUTF8String(session1) == session);
425 std::string tmp("atrS2");
426 std::string tmpValue("Buu2");
428 AceDAO::setPromptDecision(TEST_WIDGET_HANDLE,
430 DPL::OptionalString(),
431 PromptDecision::ALLOW_FOR_SESSION);
433 OptionalCachedPromptDecision decision =
434 AceDAO::getPromptDecision(TEST_WIDGET_HANDLE, ruleId);
436 PromptDecision dec = PromptDecision::DENY_FOR_SESSION;
437 if (!decision.IsNull()){
438 dec = (*decision).decision;
439 RUNNER_ASSERT((*decision).session.IsNull());
441 RUNNER_ASSERT(dec == PromptDecision::ALLOW_FOR_SESSION);
446 //void AceDAOTester::test3()
448 //// Tests does verdict is stored for validity always
449 // Request request("subject", "resource");
450 // AttributeSet attributeSet;
451 // std::string tmp("atrS3");
452 // std::string tmpValue("Buu3");
453 // BaseAttributePtr atr(
454 // new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
455 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
456 // attributeSet.insert(atr);
457 // Verdict ver = Verdict::VERDICT_PERMIT;
458 // Validity val = Validity::ALWAYS;
459 // std::string session = getSession();
460 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
461 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
462 // bool result = VSPAssertEqual(verdict, Verdict::VERDICT_PERMIT);
463 // handleResult(result, "find Verdict test 3");
467 //void AceDAOTester::test4()
469 ////tests does verdict is propertly stored (NOT saved)when session is Validity::ONCE
470 ////and verdict is DENY
471 // Request request("subject", "resource");
472 // AttributeSet attributeSet;
473 // std::string tmp("atrS4");
474 // std::string tmpValue("Buu4");
475 // BaseAttributePtr atr(
476 // new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
477 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
478 // attributeSet.insert(atr);
479 // Verdict ver = Verdict::VERDICT_DENY;
480 // Validity val = Validity::ONCE;
481 // std::string session = getSession();
482 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
483 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
484 // bool result = VSPAssertEqual(verdict, Verdict::VERDICT_UNKNOWN);
485 // handleResult(result, "find Verdict test 4");
489 //void AceDAOTester::test5()
491 ////tests does verdict is properly set when validity is session
492 ////and verdict is deny
493 // Request request("subject", "resource");
494 // AttributeSet attributeSet;
495 // std::string tmp("atrS5");
496 // std::string tmpValue("Buu5");
497 // BaseAttributePtr atr(
498 // new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
499 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
500 // attributeSet.insert(atr);
501 // Verdict ver = Verdict::VERDICT_DENY;
502 // Validity val = Validity::SESSION;
503 // pip.setSessionId("5");
504 // std::string session = getSession();
505 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
506 // pip.setSessionId("5");
507 // session = getSession();
508 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
509 // bool result = VSPAssertEqual(verdict, Verdict::VERDICT_DENY);
510 // handleResult(result, "find Verdict test 5");
514 //void AceDAOTester::test6()
516 ////tests does verdict is properly stored for DENY Validity::ALWAYS
517 // Request request("subject", "resource");
518 // AttributeSet attributeSet;
519 // std::string tmp("atrS6");
520 // std::string tmpValue("Buu6");
521 // BaseAttributePtr atr(
522 // new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
523 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
524 // attributeSet.insert(atr);
525 // Verdict ver = Verdict::VERDICT_DENY;
526 // Validity val = Validity::ALWAYS;
527 // std::string session = getSession();
528 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
529 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
530 // bool result = VSPAssertEqual(verdict, Verdict::VERDICT_DENY);
531 // handleResult(result, "find Verdict test 6");
535 //void AceDAOTester::test7()
537 ////tests stored version fo INAPPLICABLE Validity::ONCE
539 // Request request("subject", "resource");
540 // AttributeSet attributeSet;
541 // attributeSet.insert(constructAttribute("atrS7","Buu7"));
542 // Verdict ver = Verdict::VERDICT_INAPPLICABLE;
543 // Validity val = Validity::ONCE;
544 // std::string session = getSession();
545 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
546 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
547 // //Verdict with 'Once' validity should not be stored, therefore
548 // //the outcome should be UNKNOWN
549 // bool result = VSPAssertEqual(verdict, Verdict::VERDICT_UNKNOWN);
550 // handleResult(result, "find Verdict test 7");
554 //void AceDAOTester::test8()
556 ////tests storing data for verdict INAPLICABLE and Validity::SESSION
558 // Request request("subject", "resource");
559 // AttributeSet attributeSet;
560 // attributeSet.insert(constructAttribute("atrS8","Buuu8"));
561 // Verdict ver = Verdict::VERDICT_INAPPLICABLE;
562 // Validity val = Validity::SESSION;
563 // pip.setSessionId("8");
564 // std::string session = getSession();
565 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
566 // pip.setSessionId("9");
567 // session = getSession();
568 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
569 // bool result = VSPAssertEqual(verdict, Verdict::VERDICT_UNKNOWN);
570 // handleResult(result, "find Verdict test 8");
574 //void AceDAOTester::test9()
576 // Request request("subject", "resource");
577 // AttributeSet attributeSet;
578 // std::string tmp("atrS9");
579 // std::string tmpValue("Buu9");
580 // BaseAttributePtr atr(
581 // new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
582 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
583 // attributeSet.insert(atr);
584 // Verdict ver = Verdict::VERDICT_INAPPLICABLE;
585 // Validity val = Validity::ALWAYS;
586 // std::string session = getSession();
587 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
588 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
589 // bool result = VSPAssertEqual(verdict, Verdict::VERDICT_INAPPLICABLE);
590 // handleResult(result, "find Verdict test 9");
594 //void AceDAOTester::test10()
596 ////tests does verdict is properly stored for verdict undetermined
597 ////and validity Validity::ONCE - thats why verdict is UNKNOWN
598 // Request request("subject", "resource");
599 // AttributeSet attributeSet;
600 // std::string tmp("atrS10");
601 // std::string tmpValue("Buu10");
602 // BaseAttributePtr atr(
603 // new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
604 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
605 // attributeSet.insert(atr);
606 // Verdict ver = Verdict::VERDICT_UNDETERMINED;
607 // Validity val = Validity::ONCE;
608 // std::string session = getSession();
609 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
610 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
611 // bool result = VSPAssertEqual(verdict, Verdict::VERDICT_UNKNOWN);
612 // handleResult(result, "find Verdict test 10");
616 //void AceDAOTester::test11()
618 ////tests does verdict is properly stored for verdict undetermined
619 ////and validity Validity::SESSION - TODO Verdicts for undetermined are not stored??
620 // Request request("subject", "resource");
621 // AttributeSet attributeSet;
622 // std::string tmp("atrS11");
623 // std::string tmpValue("Buu11");
624 // BaseAttributePtr atr(
625 // new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
626 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
627 // attributeSet.insert(atr);
628 // Verdict ver = Verdict::VERDICT_UNDETERMINED;
629 // pip.setSessionId("8");
630 // Validity val = Validity::SESSION;
631 // pip.setSessionId("8");
632 // std::string session = getSession();
633 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
634 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
635 // bool result = VSPAssertEqual(verdict, Verdict::VERDICT_UNKNOWN);
636 // handleResult(result, "find Verdict test 11");
640 //void AceDAOTester::test12()
642 ////tests does verdict is properly stored for verdict undetermined
643 ////and validity Validity::ALWAYS - TODO Verdicts for undetermined are not stored??
644 // Request request("subject", "resource");
645 // AttributeSet attributeSet;
646 // std::string tmp("atrS12");
647 // std::string tmpValue("Buu12");
648 // BaseAttributePtr atr(
649 // new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
650 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
651 // attributeSet.insert(atr);
652 // Verdict ver = Verdict::VERDICT_UNDETERMINED;
653 // Validity val = Validity::ALWAYS;
654 // std::string session = getSession();
655 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
656 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
657 // bool result = VSPAssertEqual(verdict, Verdict::VERDICT_UNKNOWN);
658 // handleResult(result, "find Verdict test 12");
662 //void AceDAOTester::test13()
664 ////tests does verdict is properly stored for verdict unknown
665 ////and validity Validity::ONCE-thats why verdict is not stored
666 // Request request("subject", "resource");
667 // AttributeSet attributeSet;
668 // std::string tmp("atrS13");
669 // std::string tmpValue("Buu13");
670 // BaseAttributePtr atr(
671 // new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
672 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
673 // attributeSet.insert(atr);
674 // Verdict ver = Verdict::VERDICT_UNKNOWN;
675 // Validity val = Validity::ONCE;
676 // std::string session = getSession();
677 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
678 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
679 // bool result = VSPAssertEqual(verdict, Verdict::VERDICT_UNKNOWN);
680 // handleResult(result, "find Verdict test 13");
684 //void AceDAOTester::test14()
686 ////tests does verdict is properly stored for verdict unknown
687 ////and validity session- TODO why is the verdict not stored?
688 // Request request("subject", "resource");
689 // AttributeSet attributeSet;
690 // std::string tmp("atrS14");
691 // std::string tmpValue("Buu14");
692 // BaseAttributePtr atr(
693 // new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
694 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
695 // attributeSet.insert(atr);
696 // Verdict ver = Verdict::VERDICT_UNKNOWN;
697 // Validity val = Validity::SESSION;
698 // pip.setSessionId("8");
699 // std::string session = getSession();
700 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
701 // pip.setSessionId("8");
702 // session = getSession();
703 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
704 // bool result = VSPAssertEqual(verdict, Verdict::VERDICT_UNKNOWN);
705 // handleResult(result, "find Verdict test 14");
709 //void AceDAOTester::test15()
711 ////tests does verdict is properly stored for verdict unknown and
712 ////validity Validity::ALWAYS - TODO should we save Unknown verdict?
713 // Request request("subject", "resource");
714 // AttributeSet attributeSet;
715 // std::string tmp("atrS15");
716 // std::string tmpValue("Buu15");
717 // BaseAttributePtr atr(
718 // new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
719 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
720 // attributeSet.insert(atr);
721 // Verdict ver = Verdict::VERDICT_UNKNOWN;
722 // Validity val = Validity::ALWAYS;
723 // std::string session = getSession();
724 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
725 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
726 // bool result = VSPAssertEqual(verdict, Verdict::VERDICT_UNKNOWN);
727 // handleResult(result, "find Verdict test 15");
730 ///*removeVerdict*/ //tests does verdict is properly removed
731 //void AceDAOTester::test16()
733 // Request request("subject", "resource");
734 // AttributeSet attributeSet;
735 // std::string tmp("atrS15");
736 // std::string tmpValue("Buu15");
737 // BaseAttributePtr atr(
738 // new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
739 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
740 // attributeSet.insert(atr);
742 // Verdict ver = Verdict::VERDICT_PERMIT;
743 // Validity val = Validity::ALWAYS;
745 // std::string session = getSession();
746 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
747 // //check has verdict been stored?
748 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
749 // bool result = VSPAssertEqual(verdict, Verdict::VERDICT_PERMIT);
750 // handleResult(result, "find Verdict test 16: partA");
753 // VerdictLogic::removeVerdict(request, attributeSet);
754 // //verified removed
755 // verdict = VerdictLogic::findVerdict(request, session, attributeSet);
756 // result = VSPAssertEqual(verdict, Verdict::VERDICT_UNKNOWN);
757 // handleResult(result, "find Verdict test 16: partB");
761 //void AceDAOTester::test18()
763 ////verdict for 3 elements on the set of attributes
764 // Request request("subject18","resource");
765 // AttributeSet attributeSet;
766 // std::string tmp("atrS60");
767 // std::string tmpValue("Buu60");
768 // BaseAttributePtr atr(
769 // new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
770 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
771 // attributeSet.insert(atr);
773 // std::string tmp1("atrS61");
774 // std::string tmpValue1("Buu61");
775 // BaseAttributePtr atr1(
776 // new Attribute(&tmp1,Attribute::Match::Equal, Attribute::Type::Subject));
777 // DPL::StaticPointerCast<Attribute>(atr1)->addValue(&tmpValue1);
778 // attributeSet.insert(atr1);
780 // std::string tmp2("atrS62");
781 // std::string tmpValue2("Buu62");
782 // BaseAttributePtr atr2(
783 // new Attribute(&tmp2,Attribute::Match::Equal, Attribute::Type::Subject));
784 // DPL::StaticPointerCast<Attribute>(atr2)->addValue(&tmpValue2);
785 // attributeSet.insert(atr2);
787 // Verdict ver = Verdict::VERDICT_DENY;
788 // Validity val = Validity::ALWAYS;
789 // std::string session = getSession();
790 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
791 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
792 // bool result = VSPAssertEqual(verdict, Verdict::VERDICT_DENY);
793 // handleResult(result, "find Verdict test 18");
797 //void AceDAOTester::test19()
800 // Request request("subject", "resource");
801 // AttributeSet attributeSet;
802 // std::string tmp("atrS15");
803 // std::string tmpValue("Buu15");
804 // BaseAttributePtr atr(
805 // new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
806 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
807 // attributeSet.insert(atr);
809 // Verdict ver = Verdict::VERDICT_PERMIT;
810 // Validity val = Validity::ALWAYS;
812 // std::string session = getSession();
813 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
814 // //check has verdict been stored?
815 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
816 // bool result = VSPAssertEqual(verdict, Verdict::VERDICT_PERMIT);
817 // handleResult(result, "reset database test 19: partA");
819 // AceDAO::resetDatabase();
821 // verdict = VerdictLogic::findVerdict(request, session, attributeSet);
822 // result = VSPAssertEqual(verdict, Verdict::VERDICT_UNKNOWN);
823 // handleResult(result, "reset database test 19: partB");
827 /*setWidgetDevCapSetting*/
831 std::string res("res20");
832 WidgetHandle sub = 20;
834 SettingsLogic::setWidgetDevCapSetting(res, sub, Preference::PREFERENCE_PERMIT);
835 std::list<PermissionTriple> userSettings;
836 SettingsLogic::getWidgetDevCapSettings(&userSettings);
839 &userSettings, res, sub, Preference::PREFERENCE_PERMIT));
842 /*setWidgetDevCapSetting*/
846 std::string res("res21");
847 WidgetHandle sub = 21;
849 SettingsLogic::setWidgetDevCapSetting(res, sub, Preference::PREFERENCE_DENY);
850 std::list<PermissionTriple> userSettings;
851 SettingsLogic::getWidgetDevCapSettings(&userSettings);
854 &userSettings, res, sub, Preference::PREFERENCE_DENY));
857 /*setWidgetDevCapSetting*/
861 std::string res("res22");
862 WidgetHandle sub = 22;
863 AceDAO::clearAllSettings();
864 SettingsLogic::setWidgetDevCapSetting(res, sub, Preference::PREFERENCE_DEFAULT);
865 std::list<PermissionTriple> userSettings;
866 SettingsLogic::getWidgetDevCapSettings(&userSettings);
869 &userSettings, res, sub, Preference::PREFERENCE_DEFAULT));
874 std::string res("res23");
875 WidgetHandle sub = 23;
877 SettingsLogic::setWidgetDevCapSetting(res, sub, Preference::PREFERENCE_DEFAULT);
878 SettingsLogic::setWidgetDevCapSetting(res, sub, Preference::PREFERENCE_DENY);
879 std::list<PermissionTriple> userSettings;
880 SettingsLogic::getWidgetDevCapSettings(&userSettings);
883 &userSettings, res, sub, Preference::PREFERENCE_DENY));
886 /*setWidgetDevCapSettings*/
890 std::string resa("res24a");
891 WidgetHandle suba = 241;
892 std::string resb("res24b");
893 WidgetHandle subb = 242;
895 std::list<PermissionTriple> permissionsL;
897 permissionsL.push_back(
898 PermissionTriple(suba, resa, Preference::PREFERENCE_DENY));
899 permissionsL.push_back(
900 PermissionTriple(subb, resb, Preference::PREFERENCE_PERMIT));
902 SettingsLogic::setWidgetDevCapSettings(permissionsL);
904 std::list<PermissionTriple> userSettings;
905 SettingsLogic::getWidgetDevCapSettings(&userSettings);
907 UserSettingsAgreed(&permissionsL, &userSettings));
914 //multi set - if value is not set in DB or has DEFAUL value it is not
915 //send by getWidgetDevCapSettings - optimization
917 std::string resa("res25a");
918 WidgetHandle suba = 251;
919 std::string resb("res25b");
920 WidgetHandle subb = 252;
921 std::string resc("res25c");
922 WidgetHandle subc = 253;
924 std::list<PermissionTriple> permissionsL;
926 permissionsL.push_back(
927 PermissionTriple(suba, resa, Preference::PREFERENCE_DENY));
928 permissionsL.push_back(
929 PermissionTriple(subb, resb, Preference::PREFERENCE_PERMIT));
930 permissionsL.push_back(
931 PermissionTriple(subc, resc, Preference::PREFERENCE_DEFAULT));
934 SettingsLogic::setWidgetDevCapSettings(permissionsL);
936 std::list<PermissionTriple> userSettings;
937 SettingsLogic::getWidgetDevCapSettings(&userSettings);
938 RUNNER_ASSERT(UserSettingsAgreed(&permissionsL, &userSettings));
943 //empty list -- TODO what is it testing?
944 std::list<PermissionTriple> permissionsL;
946 std::list<PermissionTriple> userSettings;
947 SettingsLogic::getWidgetDevCapSettings(&userSettings);
948 RUNNER_ASSERT(UserSettingsAgreed(&permissionsL, &userSettings));
953 //test resource setting PERMIT
954 std::string res("res27");
955 SettingsLogic::setDevCapSetting(res, Preference::PREFERENCE_PERMIT);
956 std::map<std::string, Preference> resourceSettings;
957 SettingsLogic::getDevCapSettings(&resourceSettings);
960 ResourceSettingEqual(&resourceSettings,
962 Preference::PREFERENCE_PERMIT));
967 //test resource setting DENY
968 std::string res("res28");
969 SettingsLogic::setDevCapSetting(res, Preference::PREFERENCE_DENY);
970 std::map<std::string, Preference> resourceSettings;
971 SettingsLogic::getDevCapSettings(&resourceSettings);
974 ResourceSettingEqual(&resourceSettings,
976 Preference::PREFERENCE_DENY));
981 //test resource setting Preference::PREFERENCE_DEFAULT
983 std::string res("res29");
984 SettingsLogic::setDevCapSetting(res, Preference::PREFERENCE_DEFAULT);
985 std::map<std::string, Preference> resourceSettings;
986 SettingsLogic::getDevCapSettings(&resourceSettings);
989 ResourceSettingEqual(
992 Preference::PREFERENCE_DEFAULT));
997 //multi set for Resource settings
999 std::string resa("res30a");
1000 std::string resb("res30b");
1002 std::list<std::pair<const std::string*, Preference> > resourcesL;
1003 resourcesL.push_back(make_pair(&resa, Preference::PREFERENCE_DENY));
1004 resourcesL.push_back(make_pair(&resb, Preference::PREFERENCE_PERMIT));
1006 SettingsLogic::setAllDevCapSettings (resourcesL);
1008 std::map<std::string, Preference> resourceSettings;
1009 SettingsLogic::getDevCapSettings(&resourceSettings);
1010 RUNNER_ASSERT(ResourceSettingsAgreed(&resourcesL, &resourceSettings));
1014 //void AceDAOTester::test31()
1016 // // session has changed (PERMIT).
1017 // //What is the verdict now?
1019 // Request request("subject", "resource");
1020 // AttributeSet attributeSet;
1021 // std::string tmp("atrS31");
1022 // std::string tmpValue("Buu31");
1023 // BaseAttributePtr atr(
1024 // new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
1025 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
1026 // attributeSet.insert(atr);
1027 // Verdict ver = Verdict::VERDICT_PERMIT;
1028 // Validity val = Validity::SESSION;
1029 // pip.setSessionId("aaa");
1031 // std::string session = getSession();
1032 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
1034 // Verdict verdictA =
1035 // VerdictLogic::findVerdict(request, session, attributeSet);
1036 // bool resultA = VSPAssertEqual(verdictA, Verdict::VERDICT_PERMIT);
1037 // handleResult(resultA, "Verdict session test 31 session a");
1039 // pip.setSessionId("bbb");
1040 // session = getSession();
1041 // Verdict verdictB =
1042 // VerdictLogic::findVerdict(request, session, attributeSet);
1043 // bool resultB = VSPAssertEqual(verdictB, Verdict::VERDICT_UNKNOWN);
1044 // handleResult(resultB, "Verdict session test 31 session b");
1048 //void AceDAOTester::test32()
1050 // //session has changed (DENY).
1051 // //what is the verdict?
1053 // Request request("subject", "resource");
1054 // AttributeSet attributeSet;
1055 // std::string tmp("atrS32");
1056 // std::string tmpValue("Buu32");
1057 // BaseAttributePtr atr(
1058 // new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
1059 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
1060 // attributeSet.insert(atr);
1061 // Verdict ver = Verdict::VERDICT_DENY;
1062 // Validity val = Validity::SESSION;
1063 // pip.setSessionId("aaa");
1064 // std::string session = getSession();
1065 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
1067 // Verdict verdictA =
1068 // VerdictLogic::findVerdict(request, session, attributeSet);
1069 // bool resultA = VSPAssertEqual(verdictA, Verdict::VERDICT_DENY);
1070 // handleResult(resultA, "Verdict session test 32 session a");
1072 // pip.setSessionId("ccc");
1074 // session = getSession();
1075 // Verdict verdictB =
1076 // VerdictLogic::findVerdict(request, session, attributeSet);
1077 // bool resultB = VSPAssertEqual(verdictB, Verdict::VERDICT_UNKNOWN);
1078 // handleResult(resultB, "Verdict session test 32 session b");
1081 //void AceDAOTester::test33(){
1083 // Request request("subject", "resource");
1084 // AttributeSet attributeSet;
1085 // std::string tmp("atrS33");
1086 // std::string tmpValue("Buu33");
1087 // BaseAttributePtr atr(new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
1088 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
1089 // attributeSet.insert(atr);
1090 // Verdict ver = Verdict::VERDICT_INAPPLICABLE;
1091 // Validity val = Validity::SESSION;
1092 // pip.setSessionId("aaa");
1093 // std::string session = getSession();
1094 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
1096 // Verdict verdictA = VerdictLogic::findVerdict(request, session, attributeSet);
1097 // bool resultA = VSPAssertEqual(verdictA, Verdict::VERDICT_INAPPLICABLE);
1098 // handleResult(resultA, "Verdict session test 33 session a");
1100 // pip.setSessionId("bbb");
1102 // session = getSession();
1103 // Verdict verdictB = VerdictLogic::findVerdict(request, session, attributeSet);
1104 // bool resultB = VSPAssertEqual(verdictB, Verdict::VERDICT_UNKNOWN);
1105 // handleResult(resultB, "Verdict session test 33 session b");
1108 //void AceDAOTester::test34(){ //session has changed (UNDETERMINED).
1109 ////what is the verdict?
1111 // Request request("subject", "resource");
1112 // AttributeSet attributeSet;
1113 // std::string tmp("atrS34");
1114 // std::string tmpValue("Buu34");
1115 // BaseAttributePtr atr(new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
1116 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
1117 // attributeSet.insert(atr);
1118 // Verdict ver = Verdict::VERDICT_UNDETERMINED;
1119 // Validity val = Validity::SESSION;
1120 // pip.setSessionId("aaa");
1121 // std::string session = getSession();
1122 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
1124 // Verdict verdictA = VerdictLogic::findVerdict(request, session, attributeSet);
1125 // bool resultA = VSPAssertEqual(verdictA, Verdict::VERDICT_UNKNOWN);
1126 // handleResult(resultA, "Verdict session test 34 session a");
1128 // pip.setSessionId("bbb");
1130 // session = getSession();
1131 // Verdict verdictB = VerdictLogic::findVerdict(request, session, attributeSet);
1132 // bool resultB = VSPAssertEqual(verdictB, Verdict::VERDICT_UNKNOWN);
1133 // handleResult(resultB, "Verdict session test 34 session b");
1136 //void AceDAOTester::test35(){ //session has changed(UNKNOWN),
1137 ////what is the verdict?
1139 // Request request("subject", "resource");
1140 // AttributeSet attributeSet;
1141 // std::string tmp("atrS35");
1142 // std::string tmpValue("Buu35");
1143 // BaseAttributePtr atr(new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
1144 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
1145 // attributeSet.insert(atr);
1146 // Verdict ver = Verdict::VERDICT_UNKNOWN;
1147 // Validity val = Validity::SESSION;
1148 // pip.setSessionId("aaa");
1149 // std::string session = getSession();
1150 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
1152 // Verdict verdictA = VerdictLogic::findVerdict(request, session, attributeSet);
1153 // bool resultA = VSPAssertEqual(verdictA, Verdict::VERDICT_UNKNOWN);
1154 // handleResult(resultA, "Verdict session test 35 session a");
1155 // pip.setSessionId("bbb");
1157 // session = getSession();
1158 // Verdict verdictB = VerdictLogic::findVerdict(request, session,attributeSet);
1159 // bool resultB = VSPAssertEqual(verdictB, Verdict::VERDICT_UNKNOWN);
1160 // handleResult(resultB, "Verdict session test 35 session b");
1163 //void AceDAOTester::test36(){ //changed verdict in the same session
1165 // Request request("subject", "resource");
1166 // AttributeSet attributeSet;
1167 // std::string tmp("atrS36");
1168 // std::string tmpValue("Buu36");
1169 // BaseAttributePtr atr(new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
1170 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
1171 // attributeSet.insert(atr);
1172 // Verdict ver = Verdict::VERDICT_DENY;
1173 // Validity val = Validity::SESSION;
1174 // pip.setSessionId("aaa");
1175 // std::string session = getSession();
1176 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
1178 // Verdict verdictA = VerdictLogic::findVerdict(request, session, attributeSet);
1179 // bool resultA = VSPAssertEqual(verdictA ,Verdict::VERDICT_DENY);
1180 // handleResult(resultA, "Verdict session test 36 session a");
1182 // ver = Verdict::VERDICT_PERMIT;
1183 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
1185 // Verdict verdictB = VerdictLogic::findVerdict(request, session, attributeSet);
1186 // bool resultB = VSPAssertEqual(verdictB ,Verdict::VERDICT_PERMIT);
1187 // handleResult(resultB, "Verdict session test 36 session b");
1190 ///* User settings crash tests */
1193 //void AceDAOTester::test37(){ //empty attribute and verdict permit always
1194 // Request request("subject", "resource");
1195 // AttributeSet attributeSet;
1197 // Verdict ver = Verdict::VERDICT_PERMIT;
1198 // Validity val = Validity::ALWAYS;
1200 // std::string session = getSession();
1201 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
1203 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
1204 // bool result = VSPAssertEqual(verdict,Verdict::VERDICT_PERMIT);
1205 // handleResult(result, "find Verdict empty attribute set test 37 ");
1208 //void AceDAOTester::test38(){ //empty attribute and verdict deny always
1209 // Request request("subject", "resource");
1210 // AttributeSet attributeSet;
1212 // Verdict ver = Verdict::VERDICT_DENY;
1213 // Validity val = Validity::ALWAYS;
1215 // std::string session = getSession();
1216 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
1218 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
1219 // bool result = VSPAssertEqual(verdict,Verdict::VERDICT_DENY);
1220 // handleResult(result, "find Verdict empty attribute set test 38 ");
1223 //void AceDAOTester::test39(){
1225 // Request request("subject", "resource");
1226 // AttributeSet attributeSet;
1228 // Verdict ver = Verdict::VERDICT_INAPPLICABLE;
1229 // Validity val = Validity::ALWAYS;
1231 // std::string session = getSession();
1232 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
1234 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
1235 // bool result = VSPAssertEqual(verdict,Verdict::VERDICT_INAPPLICABLE);
1236 // handleResult(result, "find Verdict empty attribute set test 39 ");
1239 //void AceDAOTester::test40(){ //empty attribute and verdict unknown
1240 // Request request("subject", "resource");
1241 // AttributeSet attributeSet;
1243 // Verdict ver = Verdict::VERDICT_UNKNOWN;
1244 // Validity val = Validity::ALWAYS;
1246 // std::string session = getSession();
1247 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
1249 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
1250 // bool result = VSPAssertEqual(verdict,Verdict::VERDICT_UNKNOWN);
1251 // handleResult(result, "find Verdict empty attribute set test 40 ");
1254 //void AceDAOTester::test41()
1256 // //empty string as subject and resource,
1257 // //without attributes and verdit DENY Validity::ALWAYS
1258 // Request request("", "");
1259 // //TODO is it OK to store Verdict::VERDICT for empty request?
1260 // AttributeSet attributeSet;
1262 // Verdict ver = Verdict::VERDICT_DENY;
1263 // Validity val = Validity::ALWAYS;
1265 // std::string session = getSession();
1266 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
1268 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
1269 // bool result = VSPAssertEqual(verdict,Verdict::VERDICT_DENY);
1270 // //bool result = VSPAssertEqual(verdict,Verdict::VERDICT_UNKNOWN);
1271 // handleResult(result, "find Verdict empty request empty "
1272 // "attribute set test 41 ");
1275 //void AceDAOTester::test42(){
1276 // //empty string as subject and resource, without attributes
1277 // //and verdict is PERMIT Validity::ALWAYS
1278 // Request request("", "");
1280 // AttributeSet attributeSet;
1281 // std::string tmp("atrS42");
1282 // std::string tmpValue("Buu342");
1283 // BaseAttributePtr atr(new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
1284 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
1285 // attributeSet.insert(atr);
1287 // Verdict ver = Verdict::VERDICT_PERMIT;
1288 // Validity val = Validity::ALWAYS;
1290 // std::string session = getSession();
1291 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
1293 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
1294 // bool result = VSPAssertEqual(verdict,Verdict::VERDICT_PERMIT);
1295 // handleResult(result, "find Verdict empty request test 42 ");
1298 //void AceDAOTester::test43(){
1299 // //TODO I have changed it! verdict
1300 // //has changed and stored in DB. does current verdict is the last one?
1302 // Request request("ac", "ca");
1303 // AttributeSet attributeSet;
1305 // Verdict ver = Verdict::VERDICT_DENY;
1306 // Verdict verp = Verdict::VERDICT_PERMIT;
1307 // Validity val = Validity::ALWAYS;
1309 // std::string session = getSession();
1310 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
1311 // VerdictLogic::addVerdict(request, session, attributeSet, verp, val);
1313 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
1314 // bool result = VSPAssertEqual(verdict,Verdict::VERDICT_PERMIT);
1315 // handleResult(result, "find Verdict empty request empty "
1316 // "attribute set test 43 ");
1319 //void AceDAOTester::test44(){
1320 // //empty subject and resource name - get Atributes list
1321 // Request request("","");
1323 // AttributeSet attributeSet;
1324 // std::string tmp("atrS44");
1325 // std::string tmpValue("Buu44");
1326 // BaseAttributePtr atr(new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
1327 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
1328 // attributeSet.insert(atr);
1330 // Verdict ver = Verdict::VERDICT_PERMIT;
1331 // Validity val = Validity::ALWAYS;
1332 // std::string session = getSession();
1333 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
1335 // AttributeSet attributeS;
1336 // AceDAO::getAttributes(&attributeS);
1338 // bool result = false;
1340 // result = AttributeEqual(attributeSet,attributeS);
1342 // handleResult(!result,"find Attributes empty request test 44");
1345 //void AceDAOTester::test45(){
1346 // //empty subject and resource name - what is the verdict? - is it OK??
1347 // Request request("", "");
1348 // AttributeSet attributeSet;
1349 // std::string tmp("atrS15");
1350 // std::string tmpValue("Buu15");
1351 // BaseAttributePtr atr(new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
1352 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
1353 // attributeSet.insert(atr);
1355 // Verdict ver = Verdict::VERDICT_PERMIT;
1356 // Validity val = Validity::ALWAYS;
1357 // std::string session = getSession();
1358 // VerdictLogic::addVerdict(request, session, attributeSet, ver, val);
1360 // VerdictLogic::removeVerdict(request, attributeSet);
1362 // Verdict verdict = VerdictLogic::findVerdict(request, session, attributeSet);
1363 // bool result = VSPAssertEqual(verdict,Verdict::VERDICT_UNKNOWN);
1364 // handleResult(result, "find Verdict test 45");
1367 //void AceDAOTester::test46(){
1368 // // TODO is it ok that for empty subject and resource name
1369 // // the verdict is not stored
1370 // Request requestemp("", "");
1371 // Request request("aa","bb");
1373 // AttributeSet attributeSet;
1374 // std::string tmp("atrS46");
1375 // std::string tmpValue("Buu146");
1376 // BaseAttributePtr atr(new Attribute(&tmp, Attribute::Match::Equal, Attribute::Type::Subject));
1377 // DPL::StaticPointerCast<Attribute>(atr)->addValue(&tmpValue);
1378 // attributeSet.insert(atr);
1380 // Verdict verAdd = Verdict::VERDICT_PERMIT;
1381 // Validity val = Validity::ALWAYS;
1382 // std::string session = getSession();
1383 // VerdictLogic::addVerdict(requestemp, session, attributeSet, verAdd, val);
1384 // VerdictLogic::addVerdict(request, session, attributeSet, verAdd, val);
1386 // VerdictLogic::removeVerdict(requestemp, attributeSet);
1388 // Verdict verdictA = VerdictLogic::findVerdict(requestemp, session, attributeSet);
1389 // bool resultA = VSPAssertEqual(verdictA,Verdict::VERDICT_UNKNOWN);
1390 // handleResult(resultA,"find Verdict test 46 A ");
1392 // Verdict verdictB = VerdictLogic::findVerdict(request, session, attributeSet);
1393 // bool resultB = VSPAssertEqual(verdictB, Verdict::VERDICT_PERMIT);
1394 // handleResult(resultB,"find Verdict test 46 B ");
1400 //Empty resource name
1401 std::string res("");
1402 SettingsLogic::setDevCapSetting(res, Preference::PREFERENCE_PERMIT);
1403 std::map<std::string, Preference> resourceSettings;
1404 SettingsLogic::getDevCapSettings(&resourceSettings);
1407 ResourceSettingEqual(
1410 Preference::PREFERENCE_PERMIT));
1413 //void AceDAOTester::test48(){
1414 // SettingsLogic::setResourceSetting(NULL, PERMIT);
1415 // std::map<std::string, Preference>* resourceSettings =
1416 // SettingsLogic::getResourceSettings();
1418 // bool result = ResourceSettingEqual(resourceSettings, NULL,PERMIT );
1419 // handleResult(result, "get Resource Settings empty resource test 48");
1420 // printf("get Resource Settings empty resource test 48 -----> "
1421 // "Segmentation fault\n");
1426 //resource settings list with empty elemen
1428 std::string resb("");
1430 std::list<std::pair<const std::string*, Preference> > resourcesL;
1431 resourcesL.push_back(make_pair(&resb, Preference::PREFERENCE_PERMIT));
1433 SettingsLogic::setAllDevCapSettings (resourcesL);
1435 std::map<std::string, Preference> resourceSettings;
1436 SettingsLogic::getDevCapSettings(&resourceSettings);
1437 RUNNER_ASSERT(ResourceSettingsEqual(&resourcesL, &resourceSettings));
1442 //user settings with empty subject and resource
1443 //if resource or subject name is empty, values are not saved in DB
1444 std::string resb("fake-resource");
1445 WidgetHandle subb = 0;
1447 std::list<PermissionTriple> permissionsL;
1449 permissionsL.push_back(PermissionTriple(subb, resb, Preference::PREFERENCE_PERMIT));
1451 SettingsLogic::setWidgetDevCapSettings(permissionsL);
1453 std::list<PermissionTriple> userSettings;
1454 SettingsLogic::getWidgetDevCapSettings(&userSettings);
1455 RUNNER_ASSERT(UserSettingsAgreed(&permissionsL, &userSettings));
1460 //user setting equal
1461 // settings with at least one empty value is not set
1462 std::string res("");
1463 WidgetHandle sub = 0;
1465 SettingsLogic::setWidgetDevCapSetting(res, sub, Preference::PREFERENCE_PERMIT);
1466 std::list<PermissionTriple> userSettings;
1467 SettingsLogic::getWidgetDevCapSettings(&userSettings);
1469 UserSettingNotStored(
1473 Preference::PREFERENCE_PERMIT));
1478 //user settings empty values and Default access
1480 std::string res("");
1481 WidgetHandle sub = 0;
1483 SettingsLogic::setWidgetDevCapSetting(res, sub, Preference::PREFERENCE_DEFAULT);
1484 std::list<PermissionTriple> userSettings;
1485 SettingsLogic::getWidgetDevCapSettings(&userSettings);
1487 UserSettingNotStored(
1491 Preference::PREFERENCE_DEFAULT));
1496 DPL::OptionalString sessionId(DPL::FromUTF8String("fakesession"));
1497 AceDAO::setPromptDecision(59, 4, sessionId, PromptDecision::ALLOW_FOR_SESSION);
1499 OptionalCachedPromptDecision dec = AceDAO::getPromptDecision(59, 4);
1501 RUNNER_ASSERT(!dec.IsNull());
1505 RUNNER_ASSERT(dec->decision == PromptDecision::ALLOW_FOR_SESSION);
1506 RUNNER_ASSERT(!(dec->session.IsNull()));
1507 if (!(dec->session.IsNull())) {
1508 RUNNER_ASSERT(*(dec->session) == *sessionId);
1515 DPL::OptionalString sessionId(DPL::FromUTF8String("fakesession44"));
1516 AceDAO::setPromptDecision(60, 4, sessionId, PromptDecision::ALLOW_FOR_SESSION);
1517 AceDAO::setPromptDecision(60, 4, sessionId, PromptDecision::DENY_FOR_SESSION);
1519 OptionalCachedPromptDecision dec = AceDAO::getPromptDecision(60, 4);
1521 RUNNER_ASSERT(!dec.IsNull());
1525 RUNNER_ASSERT(dec->decision == PromptDecision::DENY_FOR_SESSION);
1526 RUNNER_ASSERT(!(dec->session.IsNull()));
1527 if (!(dec->session.IsNull())) {
1528 RUNNER_ASSERT(*(dec->session) == *sessionId);
1535 DPL::OptionalString sessionId(DPL::FromUTF8String("fakesessionxxx"));
1536 AceDAO::setPromptDecision(61, 4, sessionId, PromptDecision::ALLOW_FOR_SESSION);
1537 AceDAO::setPromptDecision(61, 4, sessionId, PromptDecision::DENY_FOR_SESSION);
1538 AceDAO::setPromptDecision(61, 5, sessionId, PromptDecision::ALLOW_FOR_SESSION);
1539 AceDAO::setPromptDecision(61, 3, sessionId, PromptDecision::ALLOW_FOR_SESSION);
1540 AceDAO::setPromptDecision(61, 5, sessionId, PromptDecision::ALLOW_FOR_SESSION);
1541 AceDAO::setPromptDecision(61, 3, sessionId, PromptDecision::ALLOW_FOR_SESSION);
1543 OptionalCachedPromptDecision dec = AceDAO::getPromptDecision(61, 4);
1545 RUNNER_ASSERT(!dec.IsNull());
1549 RUNNER_ASSERT(dec->decision == PromptDecision::DENY_FOR_SESSION);
1550 RUNNER_ASSERT(!(dec->session.IsNull()));
1551 if (!(dec->session.IsNull())) {
1552 RUNNER_ASSERT(*(dec->session) == *sessionId);
1559 DPL::OptionalString sessionId(DPL::FromUTF8String("fakesession63"));
1560 AceDAO::setPromptDecision(61, 4, sessionId, PromptDecision::ALLOW_FOR_SESSION);
1561 AceDAO::setPromptDecision(61, 4, sessionId, PromptDecision::DENY_FOR_SESSION);
1562 AceDAO::setPromptDecision(60, 4, sessionId, PromptDecision::ALLOW_FOR_SESSION);
1563 AceDAO::setPromptDecision(60, 4, sessionId, PromptDecision::ALLOW_FOR_SESSION);
1564 AceDAO::setPromptDecision(62, 4, sessionId, PromptDecision::ALLOW_FOR_SESSION);
1565 AceDAO::setPromptDecision(62, 4, sessionId, PromptDecision::ALLOW_FOR_SESSION);
1567 OptionalCachedPromptDecision dec = AceDAO::getPromptDecision(61, 4);
1569 RUNNER_ASSERT(!dec.IsNull());
1573 RUNNER_ASSERT(dec->decision == PromptDecision::DENY_FOR_SESSION);
1574 RUNNER_ASSERT(!(dec->session.IsNull()));
1575 if (!(dec->session.IsNull())) {
1576 RUNNER_ASSERT(*(dec->session) == *sessionId);
1583 DPL::OptionalString sessionId(DPL::FromUTF8String("fakesession64"));
1584 AceDAO::setPromptDecision(61, 4, sessionId, PromptDecision::DENY_FOR_SESSION);
1585 AceDAO::setPromptDecision(61, 4, sessionId, PromptDecision::ALLOW_FOR_SESSION);
1586 AceDAO::setPromptDecision(60, 4, sessionId, PromptDecision::DENY_FOR_SESSION);
1587 AceDAO::setPromptDecision(60, 4, sessionId, PromptDecision::DENY_FOR_SESSION);
1588 AceDAO::setPromptDecision(62, 4, sessionId, PromptDecision::DENY_FOR_SESSION);
1589 AceDAO::setPromptDecision(62, 4, sessionId, PromptDecision::DENY_FOR_SESSION);
1591 OptionalCachedPromptDecision dec = AceDAO::getPromptDecision(61, 4);
1593 RUNNER_ASSERT(!dec.IsNull());
1597 RUNNER_ASSERT(dec->decision == PromptDecision::ALLOW_FOR_SESSION);
1598 RUNNER_ASSERT(!(dec->session.IsNull()));
1599 if (!(dec->session.IsNull())) {
1600 RUNNER_ASSERT(*(dec->session) == *sessionId);
1607 DPL::OptionalString sessionId;
1608 AceDAO::setPromptDecision(64, 5, sessionId, PromptDecision::DENY_ALWAYS);
1609 AceDAO::setPromptDecision(64, 5, sessionId, PromptDecision::ALLOW_ALWAYS);
1610 AceDAO::setPromptDecision(64, 4, sessionId, PromptDecision::DENY_FOR_SESSION);
1611 AceDAO::setPromptDecision(63, 5, sessionId, PromptDecision::DENY_FOR_SESSION);
1613 OptionalCachedPromptDecision dec = AceDAO::getPromptDecision(64, 5);
1615 RUNNER_ASSERT(!dec.IsNull());
1619 RUNNER_ASSERT(dec->decision == PromptDecision::ALLOW_ALWAYS);
1620 RUNNER_ASSERT(dec->session.IsNull());
1626 DPL::String f1(DPL::FromASCIIString("Feature1"));
1627 DPL::String f2(DPL::FromASCIIString("Feature2"));
1628 AceDB::FeatureNameVector fvector;
1629 fvector.push_back(f1);
1630 fvector.push_back(f2);
1631 AceDAO::setAcceptedFeature(65, fvector);
1634 AceDAO::getAcceptedFeature(65, &fvector);
1636 RUNNER_ASSERT(fvector.size() == 2);
1637 RUNNER_ASSERT(fvector[0] != fvector[1]);
1638 RUNNER_ASSERT(fvector[0] == f1 || fvector[0] == f2);
1639 RUNNER_ASSERT(fvector[1] == f1 || fvector[1] == f2);
1644 AceDB::FeatureNameVector fvector;
1645 fvector.push_back(DPL::FromASCIIString("Feature1"));
1646 fvector.push_back(DPL::FromASCIIString("Feature2"));
1647 AceDAO::setAcceptedFeature(66, fvector);
1650 AceDAO::getAcceptedFeature(67, &fvector);
1652 RUNNER_ASSERT(fvector.size() == 0);