Skip to content

Commit 62a2cb1

Browse files
authored
Merge pull request #111 from Venafi/pm_updates
Fixed issues with test suite on contacts test
2 parents 79667ec + 896692d commit 62a2cb1

3 files changed

Lines changed: 65 additions & 47 deletions

File tree

tests/test_pm.py

Lines changed: 43 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,10 @@ def test_validate_identity(self):
139139

140140
def test_create_and_get_policy_with_contacts(self):
141141
connector = self.tpp_conn
142-
zone = f"{TPP_PM_ROOT}\\{_get_tpp_policy_name()}"
142+
zone = f"{TPP_PM_ROOT}\\{get_tpp_policy_name()}"
143143
policy_specification = PolicySpecification()
144-
policy_specification.policy = _get_policy_obj(ca_type=CA_TYPE_TPP)
145-
policy_specification.defaults = _get_defaults_obj()
144+
policy_specification.policy = get_policy_obj(ca_type=CA_TYPE_TPP)
145+
policy_specification.defaults = get_defaults_obj()
146146
policy_specification.policy.key_pair.rsa_key_sizes = [2048]
147147
connector.set_policy(zone, policy_specification)
148148
result = connector.get_policy(zone)
@@ -247,22 +247,22 @@ def test_create_policy_uri_ip_email(self):
247247
self.assertTrue(ps.policy.subject_alt_names.ip_allowed)
248248

249249
def test_create_policy_with_no_users(self):
250-
zone = self._get_random_zone()
250+
zone = get_vaas_zone()
251251
connector = self.cloud_conn
252252
policy_specification = PolicySpecification()
253-
policy_specification.policy = _get_policy_obj()
254-
policy_specification.defaults = _get_defaults_obj()
253+
policy_specification.policy = get_policy_obj()
254+
policy_specification.defaults = get_defaults_obj()
255255
connector.set_policy(zone, policy_specification)
256256
result = connector.get_policy(zone)
257257
self.assertEqual(1, len(result.users))
258258
self.assertEqual("jenkins@opensource.qa.venafi.io", result.users[0])
259259

260260
def test_create_policy_with_users(self):
261-
zone = self._get_random_zone()
261+
zone = get_vaas_zone()
262262
connector = self.cloud_conn
263263
policy_specification = PolicySpecification()
264-
policy_specification.policy = _get_policy_obj()
265-
policy_specification.defaults = _get_defaults_obj()
264+
policy_specification.policy = get_policy_obj()
265+
policy_specification.defaults = get_defaults_obj()
266266
policy_specification.users = ["pki-admin@opensource.qa.venafi.io", "resource-owner@opensource.qa.venafi.io"]
267267
connector.set_policy(zone, policy_specification)
268268
result = connector.get_policy(zone)
@@ -271,13 +271,12 @@ def test_create_policy_with_users(self):
271271
self.assertIn("resource-owner@opensource.qa.venafi.io", result.users)
272272

273273
def test_update_policy_with_no_users(self):
274-
zone = self._get_random_zone()
274+
zone = get_vaas_zone()
275275
connector = self.cloud_conn
276276
policy_specification = PolicySpecification()
277-
policy_specification.policy = _get_policy_obj()
278-
policy_specification.defaults = _get_defaults_obj()
279-
policy_specification.users = ["pki-admin@opensource.qa.venafi.io",
280-
"resource-owner@opensource.qa.venafi.io"]
277+
policy_specification.policy = get_policy_obj()
278+
policy_specification.defaults = get_defaults_obj()
279+
policy_specification.users = ["pki-admin@opensource.qa.venafi.io", "resource-owner@opensource.qa.venafi.io"]
281280
connector.set_policy(zone, policy_specification)
282281
result = connector.get_policy(zone)
283282
self.assertEqual(2, len(result.users))
@@ -286,20 +285,20 @@ def test_update_policy_with_no_users(self):
286285

287286
# Update Policy Specification with no users
288287
policy_specification2 = PolicySpecification()
289-
policy_specification2.policy = _get_policy_obj()
290-
policy_specification2.defaults = _get_defaults_obj()
288+
policy_specification2.policy = get_policy_obj()
289+
policy_specification2.defaults = get_defaults_obj()
291290
connector.set_policy(zone, policy_specification2)
292291
result2 = connector.get_policy(zone)
293292
self.assertEqual(2, len(result2.users))
294293
self.assertIn("pki-admin@opensource.qa.venafi.io", result2.users)
295294
self.assertIn("resource-owner@opensource.qa.venafi.io", result2.users)
296295

297296
def test_update_policy_with_users(self):
298-
zone = self._get_random_zone()
297+
zone = get_vaas_zone()
299298
connector = self.cloud_conn
300299
policy_specification = PolicySpecification()
301-
policy_specification.policy = _get_policy_obj()
302-
policy_specification.defaults = _get_defaults_obj()
300+
policy_specification.policy = get_policy_obj()
301+
policy_specification.defaults = get_defaults_obj()
303302
policy_specification.users = ["jenkins@opensource.qa.venafi.io"]
304303
connector.set_policy(zone, policy_specification)
305304
result = connector.get_policy(zone)
@@ -308,22 +307,22 @@ def test_update_policy_with_users(self):
308307

309308
# Update Policy Specification with users
310309
policy_specification2 = PolicySpecification()
311-
policy_specification2.policy = _get_policy_obj()
312-
policy_specification2.defaults = _get_defaults_obj()
310+
policy_specification2.policy = get_policy_obj()
311+
policy_specification2.defaults = get_defaults_obj()
313312
policy_specification2.users = ["pki-admin@opensource.qa.venafi.io",
314-
"resource-owner@opensource.qa.venafi.io"]
313+
"resource-owner@opensource.qa.venafi.io"]
315314
connector.set_policy(zone, policy_specification2)
316315
result2 = connector.get_policy(zone)
317316
self.assertEqual(2, len(result2.users))
318317
self.assertIn("pki-admin@opensource.qa.venafi.io", result2.users)
319318
self.assertIn("resource-owner@opensource.qa.venafi.io", result2.users)
320319

321320
def test_create_policy_with_team(self):
322-
zone = self._get_random_zone()
321+
zone = get_vaas_zone()
323322
connector = self.cloud_conn
324323
policy_specification = PolicySpecification()
325-
policy_specification.policy = _get_policy_obj()
326-
policy_specification.defaults = _get_defaults_obj()
324+
policy_specification.policy = get_policy_obj()
325+
policy_specification.defaults = get_defaults_obj()
327326
policy_specification.users = [CLOUD_TEAM]
328327
connector.set_policy(zone, policy_specification)
329328
result = connector.get_policy(zone)
@@ -564,7 +563,11 @@ def test_exceptions_vaas(self):
564563
elliptic_curves=["asd"],
565564
service_generated=True)
566565
ps.policy.key_pair = kp
567-
ps.policy.subject_alt_names = SubjectAltNames(dns_allowed=True, email_allowed=True)
566+
ps.policy.subject_alt_names = SubjectAltNames(
567+
dns_allowed=True,
568+
email_allowed=True,
569+
upn_allowed=True
570+
)
568571
s = Subject(orgs=["Venafi"],
569572
org_units=["QA Venafi"],
570573
localities=["Salt Lake City"],
@@ -584,18 +587,13 @@ def test_exceptions_vaas(self):
584587
ps.defaults.key_pair = dkp
585588

586589
# validate key pair values
587-
try:
588-
validate_ps_vaas(ps)
589-
except VenafiError as err:
590-
msg = "Key Type values exceeded. Only one Key Type is allowed by VaaS"
591-
self.assertEqual(err.args[0], msg)
592-
ps.policy.key_pair.key_types = ["foo"]
593590
try:
594591
validate_ps_vaas(ps)
595592
except VenafiError as err:
596593
msg = f"Key Type [{ps.policy.key_pair.key_types[0]}] is not supported by VaaS"
597594
self.assertEqual(err.args[0], msg)
598595
ps.policy.key_pair.key_types = ["RSA"]
596+
599597
try:
600598
validate_ps_vaas(ps)
601599
except VenafiError as err:
@@ -607,9 +605,9 @@ def test_exceptions_vaas(self):
607605
try:
608606
validate_ps_vaas(ps)
609607
except VenafiError as err:
610-
msg = "Subject Alt name [SubjAltNameEmailAllowed] is not allowed by VaaS"
608+
msg = "Subject Alt name [SubjAltNameUpnAllowed] is not allowed by VaaS"
611609
self.assertEqual(err.args[0], msg)
612-
ps.policy.subject_alt_names.email_allowed = False
610+
ps.policy.subject_alt_names.upn_allowed = False
613611

614612
# validate default subject values against policy values
615613
try:
@@ -618,24 +616,28 @@ def test_exceptions_vaas(self):
618616
msg = default_error_msg.format('Organization', ds.org, s.orgs)
619617
self.assertEqual(err.args[0], msg)
620618
ps.defaults.subject.org = s.orgs[0]
619+
621620
try:
622621
validate_ps_vaas(ps)
623622
except VenafiError as err:
624623
msg = default_error_msg.format('Org Units', ds.org_units, s.org_units)
625624
self.assertEqual(err.args[0], msg)
626625
ps.defaults.subject.org_units = s.org_units
626+
627627
try:
628628
validate_ps_vaas(ps)
629629
except VenafiError as err:
630630
msg = default_error_msg.format('Localities', ds.locality, s.localities)
631631
self.assertEqual(err.args[0], msg)
632632
ps.defaults.subject.locality = s.localities[0]
633+
633634
try:
634635
validate_ps_vaas(ps)
635636
except VenafiError as err:
636637
msg = default_error_msg.format('States', ds.state, s.states)
637638
self.assertEqual(err.args[0], msg)
638639
ps.defaults.subject.state = s.states[0]
640+
639641
try:
640642
validate_ps_vaas(ps)
641643
except VenafiError as err:
@@ -649,24 +651,28 @@ def test_exceptions_vaas(self):
649651
except VenafiError as err:
650652
msg = default_error_msg.format('Key Types', dkp.key_type, kp.key_types)
651653
self.assertEqual(err.args[0], msg)
654+
652655
ps.defaults.key_pair.key_type = kp.key_types[0]
653656
try:
654657
validate_ps_vaas(ps)
655658
except VenafiError as err:
656659
msg = default_error_msg.format('RSA Key Sizes', dkp.rsa_key_size, kp.rsa_key_sizes)
657660
self.assertEqual(err.args[0], msg)
661+
658662
ps.defaults.key_pair.rsa_key_size = kp.rsa_key_sizes[0]
659663
try:
660664
validate_ps_vaas(ps)
661665
except VenafiError as err:
662666
msg = default_error_msg.format('Elliptic Curves', dkp.elliptic_curve, kp.elliptic_curves)
663667
self.assertEqual(err.args[0], msg)
668+
664669
ps.defaults.key_pair.elliptic_curve = kp.elliptic_curves[0]
665670
try:
666671
validate_ps_vaas(ps)
667672
except VenafiError as err:
668673
msg = default_error_msg.format('Service Generated', dkp.service_generated, kp.service_generated)
669674
self.assertEqual(err.args[0], msg)
675+
670676
ps.defaults.key_pair.service_generated = kp.service_generated
671677

672678
# validate default values when policy is not defined
@@ -682,12 +688,14 @@ def test_exceptions_vaas(self):
682688
except VenafiError as err:
683689
msg = f"Default Key Type [{dkp2.key_type}] is not supported by VaaS"
684690
self.assertEqual(err.args[0], msg)
691+
685692
ps.defaults.key_pair.key_type = "RSA"
686693
try:
687694
validate_ps_vaas(ps)
688695
except VenafiError as err:
689-
msg = f"Default Key Size [{256}] is not supported by VaaS"
696+
msg = f"Default RSA Key Size [{256}] is not supported by VaaS"
690697
self.assertEqual(err.args[0], msg)
698+
691699
ps.defaults.key_pair.rsa_key_size = 4096
692700

693701

vcert/connection_cloud.py

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -933,12 +933,16 @@ def _get_service_generated_csr_attr(self, request, zone):
933933
csr_attr_map[CSR_ATTR_COUNTRY] = ps.defaults.subject.country
934934

935935
if len(request.san_dns) > 0:
936-
sans = {
937-
CSR_ATTR_SANS_DNS: request.san_dns,
938-
CSR_ATTR_SANS_IP_ADDR: request.ip_addresses,
939-
CSR_ATTR_SANS_EMAIL_ADDR: request.email_addresses,
940-
CSR_ATTR_SANS_URIS: request.uniform_resource_identifiers
941-
}
936+
sans = dict()
937+
if request.san_dns and len(request.san_dns) > 0:
938+
sans[CSR_ATTR_SANS_DNS] = request.san_dns
939+
if request.ip_addresses and len(request.ip_addresses) > 0:
940+
sans[CSR_ATTR_SANS_IP_ADDR] = request.ip_addresses
941+
if request.email_addresses and len(request.email_addresses) > 0:
942+
sans[CSR_ATTR_SANS_EMAIL_ADDR] = request.email_addresses
943+
if request.uniform_resource_identifiers and len(request.uniform_resource_identifiers) > 0:
944+
sans[CSR_ATTR_SANS_URIS] = request.uniform_resource_identifiers
945+
942946
csr_attr_map[CSR_ATTR_SANS_BY_TYPE] = sans
943947

944948
if request.key_type:
@@ -953,7 +957,7 @@ def _get_service_generated_csr_attr(self, request, zone):
953957
req_kt_option = request.key_type.option
954958
if request.key_type.key_type.lower() == KeyType.RSA:
955959
policy_rsa_sizes = ps.policy.key_pair.rsa_key_sizes
956-
valid = value_matches_regex(value=req_kt_option, pattern_list=policy_rsa_sizes)
960+
valid = True if req_kt_option in policy_rsa_sizes else False
957961
if not valid:
958962
rsa_str = "RSA Key Size"
959963
log.error(MSG_VALUE_NOT_MATCH_POLICY.format(rsa_str, f"{rsa_str}s", req_kt_option,
@@ -970,11 +974,11 @@ def _get_service_generated_csr_attr(self, request, zone):
970974
kt_param = {
971975
CSR_ATTR_KEY_TYPE: request.key_type.key_type.upper()
972976
}
973-
kt_option = request.key_type.option.upper()
974-
if kt_option == KeyType.RSA:
975-
kt_param[CSR_ATTR_KEY_LENGTH] = kt_option
976-
elif request.key_type.key_type == KeyType.ECDSA:
977-
kt_param[CSR_ATTR_KEY_CURVE] = kt_option
977+
kt_type = request.key_type.key_type.lower()
978+
if kt_type == KeyType.RSA:
979+
kt_param[CSR_ATTR_KEY_LENGTH] = request.key_type.option
980+
elif kt_type == KeyType.ECDSA:
981+
kt_param[CSR_ATTR_KEY_CURVE] = request.key_type.option.upper()
978982

979983
csr_attr_map[CSR_ATTR_KEY_TYPE_PARAMS] = kt_param
980984
elif ps.defaults and ps.defaults.key_pair:

vcert/policy/pm_cloud.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,12 @@ def build_cit_request(ps, ca_details):
558558
ec_kt['keyCurves'] = ['P256']
559559

560560
key_types.append(ec_kt)
561+
else:
562+
rsa_kt = {
563+
'keyType': KeyType.RSA.upper(),
564+
'keyLengths': [2048]
565+
}
566+
key_types.append(rsa_kt)
561567

562568
request['keyTypes'] = key_types
563569

0 commit comments

Comments
 (0)