mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
[PR #7241/1beb38ce backport][stable-6] Use get(..)
instead of [..] for safe lookup of value (Fixes #7240) (#7257)
Use `get(..)` instead of [..] for safe lookup of value (Fixes #7240) (#7241)
A OnePassword field item might not have a value (property) when the user has omitted it (on purpose).
(cherry picked from commit 1beb38ceff
)
Co-authored-by: Wouter Klein Heerenbrink <wouter@fluxility.com>
This commit is contained in:
parent
0b494a5d2d
commit
578df1b054
5 changed files with 118 additions and 4 deletions
|
@ -0,0 +1,2 @@
|
|||
bugfixes:
|
||||
- onepassword - fix KeyError exception when trying to access value of a field that is not filled out in OnePassword item (https://github.com/ansible-collections/community.general/pull/7241).
|
|
@ -451,10 +451,10 @@ class OnePassCLIv2(OnePassCLIBase):
|
|||
# If the field name doesn't exist in the section, match on the value of "label"
|
||||
# then "id" and return "value"
|
||||
if field.get("label") == field_name:
|
||||
return field["value"]
|
||||
return field.get("value", "")
|
||||
|
||||
if field.get("id") == field_name:
|
||||
return field["value"]
|
||||
return field.get("value", "")
|
||||
|
||||
# Look at the section data and get an indentifier. The value of 'id' is either a unique ID
|
||||
# or a human-readable string. If a 'label' field exists, prefer that since
|
||||
|
@ -464,10 +464,10 @@ class OnePassCLIv2(OnePassCLIBase):
|
|||
if section_title == current_section_title:
|
||||
# In the correct section. Check "label" then "id" for the desired field_name
|
||||
if field.get("label") == field_name:
|
||||
return field["value"]
|
||||
return field.get("value", "")
|
||||
|
||||
if field.get("id") == field_name:
|
||||
return field["value"]
|
||||
return field.get("value", "")
|
||||
|
||||
return ""
|
||||
|
||||
|
|
|
@ -81,5 +81,47 @@ MOCK_ENTRIES = {
|
|||
"expected": ["first value"],
|
||||
"output": load_file("v2_out_03.json")
|
||||
},
|
||||
{
|
||||
# Request data from an omitted value (label lookup, no section)
|
||||
"vault_name": "Test Vault",
|
||||
"queries": ["Omitted values"],
|
||||
"kwargs": {
|
||||
"field": "label-without-value",
|
||||
},
|
||||
"expected": [""],
|
||||
"output": load_file("v2_out_04.json")
|
||||
},
|
||||
{
|
||||
# Request data from an omitted value (id lookup, no section)
|
||||
"vault_name": "Test Vault",
|
||||
"queries": ["Omitted values"],
|
||||
"kwargs": {
|
||||
"field": "67890q7mspf4x6zrlw3qejn7m",
|
||||
},
|
||||
"expected": [""],
|
||||
"output": load_file("v2_out_04.json")
|
||||
},
|
||||
{
|
||||
# Request data from an omitted value (label lookup, with section)
|
||||
"vault_name": "Test Vault",
|
||||
"queries": ["Omitted values"],
|
||||
"kwargs": {
|
||||
"field": "section-label-without-value",
|
||||
"section": "section-without-values"
|
||||
},
|
||||
"expected": [""],
|
||||
"output": load_file("v2_out_04.json")
|
||||
},
|
||||
{
|
||||
# Request data from an omitted value (id lookup, with section)
|
||||
"vault_name": "Test Vault",
|
||||
"queries": ["Omitted values"],
|
||||
"kwargs": {
|
||||
"field": "123345q7mspf4x6zrlw3qejn7m",
|
||||
"section": "section-without-values",
|
||||
},
|
||||
"expected": [""],
|
||||
"output": load_file("v2_out_04.json")
|
||||
},
|
||||
],
|
||||
}
|
||||
|
|
|
@ -0,0 +1,67 @@
|
|||
{
|
||||
"id": "bgqegp3xcxnpfkb45olwigpkpi",
|
||||
"title": "OmittedValues",
|
||||
"version": 1,
|
||||
"vault": {
|
||||
"id": "stpebbaccrq72xulgouxsk4p7y",
|
||||
"name": "Private"
|
||||
},
|
||||
"category": "LOGIN",
|
||||
"last_edited_by": "WOUTERRUYBH7BFPHMZ2KKGL6AU",
|
||||
"created_at": "2023-09-12T08:30:07Z",
|
||||
"updated_at": "2023-09-12T08:30:07Z",
|
||||
"additional_information": "fluxility",
|
||||
"sections": [
|
||||
{
|
||||
"id": "7osqcvd43i75teocdzbb6d7mie",
|
||||
"label": "section-without-values"
|
||||
}
|
||||
],
|
||||
"fields": [
|
||||
{
|
||||
"id": "username",
|
||||
"type": "STRING",
|
||||
"purpose": "USERNAME",
|
||||
"label": "username",
|
||||
"value": "fluxility",
|
||||
"reference": "op://Testcase/OmittedValues/username"
|
||||
},
|
||||
{
|
||||
"id": "password",
|
||||
"type": "CONCEALED",
|
||||
"purpose": "PASSWORD",
|
||||
"label": "password",
|
||||
"value": "j89Dyb7psat*hkbkyLUQyq@GR.a-g2pQH_V_xtMhrn37rQ_2uRYoRiozj6TjWVLy2pbfEvjnse",
|
||||
"entropy": 427.01202392578125,
|
||||
"reference": "op://Testcase/OmittedValues/password",
|
||||
"password_details": {
|
||||
"entropy": 427,
|
||||
"generated": true,
|
||||
"strength": "FANTASTIC"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "notesPlain",
|
||||
"type": "STRING",
|
||||
"purpose": "NOTES",
|
||||
"label": "notesPlain",
|
||||
"reference": "op://Testcase/OmittedValues/notesPlain"
|
||||
},
|
||||
{
|
||||
"id": "67890q7mspf4x6zrlw3qejn7m",
|
||||
"type": "URL",
|
||||
"label": "label-without-value",
|
||||
"reference": "op://01202392578125/OmittedValues/section-without-values/section-without-value"
|
||||
},
|
||||
{
|
||||
"id": "123345q7mspf4x6zrlw3qejn7m",
|
||||
"section": {
|
||||
"id": "6hbtca5yrlmoptgy3nw74222",
|
||||
"label": "section-without-values"
|
||||
},
|
||||
"type": "URL",
|
||||
"label": "section-label-without-value",
|
||||
"reference": "op://01202392578125/OmittedValues/section-without-values/section-without-value"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
SPDX-FileCopyrightText: 2022, Ansible Project
|
Loading…
Reference in a new issue