From 3bf0e33c86cd4cd460412c01eed9a37afacad4d5 Mon Sep 17 00:00:00 2001 From: rautenberg Date: Thu, 22 Mar 2012 12:23:09 +0100 Subject: add policy-lib mods from feature/policy and add policy tests --- test/policy.rb | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 test/policy.rb (limited to 'test') diff --git a/test/policy.rb b/test/policy.rb new file mode 100644 index 0000000..eb7e2b6 --- /dev/null +++ b/test/policy.rb @@ -0,0 +1,120 @@ +require 'test/unit' +$LOAD_PATH << File.join(File.dirname(__FILE__),'..','lib') +require File.expand_path(File.join(File.dirname(__FILE__),'..','lib','opentox-client.rb')) + +TEST_URI = "http://only_a_test/test/" + rand(1000000).to_s +USER_TYPE = "LDAPUsers" +USER_VALUE = "uid=guest,ou=people,dc=opentox,dc=org" +USER_GROUP = "member" +GROUP_TYPE = "LDAPGroups" +GROUP_VALUE = "cn=member,ou=groups,dc=opentox,dc=org" +POLICY_NAME = "test_policy_#{rand(100000)}" +RULE_NAME = "test_rule_#{rand(100000)}" +SUBJECT_NAME = "test_subject_#{rand(100000)}" + +AA ||= "https://opensso.in-silico.ch" +AA_USER = "guest" +AA_PASS = "guest" + +@@subjectid = OpenTox::Authorization.authenticate(AA_USER,AA_PASS) + +class PolicyTest < Test::Unit::TestCase + + def test_01_class + policies = OpenTox::Policies.new() + assert_equal(policies.class, OpenTox::Policies) + assert_kind_of Array, policies.names + assert_kind_of Array, policies.uris + assert_kind_of Array, policies.names + end + + def test_02_subclasses + policies = OpenTox::Policies.new() + policies.new_policy(POLICY_NAME) + assert_equal(policies.names[0], POLICY_NAME) + assert_equal(policies.policies[policies.names[0]].class, OpenTox::Policy) + policy = policies.policies[policies.names[0]] + policy.rule.name = RULE_NAME + policy.uri = TEST_URI + assert_equal(policy.rule.class, OpenTox::Policy::Rule) + assert_equal(policy.rule.name, RULE_NAME) + assert_equal(policy.rule.uri, TEST_URI) + assert_equal(policy.uri, TEST_URI) + policy.subject.name = SUBJECT_NAME + policy.type = USER_TYPE + policy.value = USER_VALUE + assert_equal(policy.subject.class, OpenTox::Policy::Subject) + assert_equal(policy.subject.name, SUBJECT_NAME) + assert_equal(policy.subject.type, USER_TYPE) + assert_equal(policy.type, USER_TYPE) + assert_equal(policy.subject.value, USER_VALUE) + assert_equal(policy.value, USER_VALUE) + end + + def test_03_read_readwrite + policies = OpenTox::Policies.new() + policies.new_policy(POLICY_NAME) + policy = policies.policies[policies.names[0]] + policy.rule.name = RULE_NAME + policy.uri = TEST_URI + policy.rule.get = "allow" + assert policy.rule.read + assert !policy.rule.readwrite + policy.rule.post = "allow" + policy.rule.put = "allow" + assert !policy.rule.read + assert policy.rule.readwrite + end + + def test_04_group_user + policies = OpenTox::Policies.new() + policies.load_default_policy(AA_USER, TEST_URI, "member") + assert_equal "member", policies.policies["policy_group"].group + assert_equal AA_USER, policies.policies["policy_user"].user + end + + def test_05_DN + policies = OpenTox::Policies.new() + policies.new_policy(POLICY_NAME) + policy = policies.policies[policies.names[0]] + policy.set_ot_user(AA_USER) + assert_equal USER_VALUE, policy.value + assert_equal USER_TYPE, policy.type + policy.set_ot_group(USER_GROUP) + assert_equal GROUP_VALUE, policy.value + assert_equal GROUP_TYPE, policy.type + end + + def test_06_load_xml_and_check_defaults + policies = OpenTox::Policies.new() + xml = File.read(File.join(File.dirname(__FILE__), "../lib/templates/default_policy.xml")) + policies.load_xml(xml) + # check user policy + policy = policies.policies["policy_user"] + assert policy.name == "policy_user" + assert policy.rule.name == "rule_user" + assert policy.rule.uri == "uri" + assert policy.rule.get == "allow" + assert policy.rule.post == "allow" + assert policy.rule.delete == "allow" + assert policy.rule.put == "allow" + assert policy.subject_group == "subjects_user" + assert policy.subject.name == "subject_user" + assert policy.subject.type == USER_TYPE + assert policy.subject.value == USER_VALUE + # check group policy + policy = policies.policies["policy_group"] + assert policy.name == "policy_group" + assert policy.rule.name == "rule_group" + assert policy.rule.uri == "uri" + assert policy.rule.get == "allow" + assert !policy.rule.post + assert !policy.rule.delete + assert !policy.rule.put + assert policy.subject_group == "subjects_group" + assert policy.subject.name == "subject_group" + assert policy.subject.type == GROUP_TYPE + assert policy.subject.value == GROUP_VALUE + end + +end \ No newline at end of file -- cgit v1.2.3