Skip to content

Commit 4a0159f

Browse files
committed
split examples and tests into smaller units
1 parent a56d5eb commit 4a0159f

10 files changed

+174
-44
lines changed

tests/test.py renamed to example/item_crud_operation.py

Lines changed: 18 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,45 @@
11
import asyncio
22
import os
33

4-
# [developer-docs.sdk.python.sdk-import]-start
5-
from onepassword import *
6-
# [developer-docs.sdk.python.sdk-import]-end
4+
from onepassword.client import Client
5+
from onepassword.types import AutofillBehavior, ItemCategory, ItemCreateParams, ItemField, ItemFieldType, ItemSection, Website
76

8-
9-
async def main():
10-
# [developer-docs.sdk.python.client-initialization]-start
11-
# Gets your service account token from the OP_SERVICE_ACCOUNT_TOKEN environment variable.
7+
# Perform CRUD operations on an item
8+
async def item_crud_operation():
129
token = os.getenv("OP_SERVICE_ACCOUNT_TOKEN")
13-
test_vault_id = os.getenv("CORE_SDK_TEST_VAULT_ID")
14-
test_secret_ref = os.getenv("CORE_SDK_TEST_SECRET_REF")
15-
16-
if not token or not test_vault_id or not test_secret_ref:
17-
raise ValueError("OP_SERVICE_ACCOUNT_TOKEN, CORE_SDK_TEST_VAULT_ID, and CORE_SDK_TEST_SECRET_REF must be set.")
18-
19-
# Connects to 1Password.
10+
if not token:
11+
raise ValueError("OP_SERVICE_ACCOUNT_TOKEN must be set.")
2012
client = await Client.authenticate(
2113
auth=token,
2214
# Set the following to your own integration name and version.
2315
integration_name="My 1Password Integration",
2416
integration_version="v1.0.0",
2517
)
26-
# [developer-docs.sdk.python.client-initialization]-end
27-
28-
# [developer-docs.sdk.python.list-vaults]-start
29-
vaults = await client.vaults.list_all()
30-
async for vault in vaults:
31-
print(vault.title)
32-
# [developer-docs.sdk.python.list-vaults]-end
33-
34-
# [developer-docs.sdk.python.list-items]-start
35-
items = await client.items.list_all(vault.id)
36-
async for item in items:
37-
print(item.title)
38-
# [developer-docs.sdk.python.list-items]-end
39-
40-
# [developer-docs.sdk.python.resolve-secret]-start
41-
# Retrieves a secret from 1Password. Takes a secret reference as input and returns the secret to which it points.
42-
value = await client.secrets.resolve(test_secret_ref)
43-
print(value)
44-
# [developer-docs.sdk.python.resolve-secret]-end
45-
46-
# [developer-docs.sdk.python.create-item]-start
47-
# Create an Item and add it to your vault.
18+
# Fill in a real vault ID below
19+
# You can find this by using the list_vaults.py example
20+
# Or using `op vault list`
21+
vault_id = "xxxxxxxxxxxxxxxxxxxxxxxxxx"
4822
to_create = ItemCreateParams(
4923
title="MyName",
50-
category="Login",
51-
vaultId = test_vault_id,
24+
category=ItemCategory.LOGIN,
25+
vault_id=vault_id,
5226
fields=[
5327
ItemField(
5428
id="username",
5529
title="username",
56-
field_type="Text",
30+
field_type=ItemFieldType.TEXT,
5731
value="mynameisjeff",
5832
),
5933
ItemField(
6034
id="password",
6135
title="password",
62-
field_type="Concealed",
36+
field_type=ItemFieldType.CONCEALED,
6337
value="jeff",
6438
),
6539
ItemField(
6640
id="onetimepassword",
6741
title="one-time-password",
68-
field_type="Totp",
42+
field_type=ItemFieldType.TOTP,
6943
section_id="totpsection",
7044
value="otpauth://totp/my-example-otp?secret=jncrjgbdjnrncbjsr&issuer=1Password",
7145
),
@@ -79,7 +53,7 @@ async def main():
7953
Website(
8054
label="my custom website",
8155
url="https://example.com",
82-
autofill_behavior="AnywhereOnWebsite",
56+
autofill_behavior=AutofillBehavior.NEVER,
8357
)
8458
],
8559
)
@@ -120,7 +94,7 @@ async def main():
12094
Website(
12195
label="my custom website 2",
12296
url="https://example2.com",
123-
autofill_behavior="Never",
97+
autofill_behavior=AutofillBehavior.NEVER,
12498
),
12599
)
126100
updated_item = await client.items.put(item)
@@ -134,4 +108,4 @@ async def main():
134108

135109

136110
if __name__ == "__main__":
137-
asyncio.run(main())
111+
asyncio.run(item_crud_operation())

example/list_items_in_vaults.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import asyncio
2+
import os
3+
4+
from onepassword.client import Client
5+
6+
# list all items in all vaults
7+
async def list_items_in_vaults():
8+
token = os.getenv("OP_SERVICE_ACCOUNT_TOKEN")
9+
if not token:
10+
raise ValueError("OP_SERVICE_ACCOUNT_TOKEN must be set.")
11+
client = await Client.authenticate(
12+
auth=token,
13+
# Set the following to your own integration name and version.
14+
integration_name="My 1Password Integration",
15+
integration_version="v1.0.0",
16+
)
17+
vaults = await client.vaults.list_all()
18+
async for vault in vaults:
19+
items = await client.items.list_all(vault.id)
20+
async for item in items:
21+
print(item.title)
22+
23+
if __name__ == "__main__":
24+
asyncio.run(list_items_in_vaults())

example/list_vaults.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import asyncio
2+
import os
3+
4+
from onepassword.client import Client
5+
6+
# list all vaults
7+
async def list_vaults():
8+
token = os.getenv("OP_SERVICE_ACCOUNT_TOKEN")
9+
if not token:
10+
raise ValueError("OP_SERVICE_ACCOUNT_TOKEN must be set.")
11+
client = await Client.authenticate(
12+
auth=token,
13+
# Set the following to your own integration name and version.
14+
integration_name="My 1Password Integration",
15+
integration_version="v1.0.0",
16+
)
17+
vaults = await client.vaults.list_all()
18+
async for vault in vaults:
19+
print(vault.title)
20+
21+
if __name__ == "__main__":
22+
asyncio.run(list_vaults())
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
2+
from onepassword.secrets import Secrets
3+
4+
# Retrieves a secret from 1Password. Takes a secret reference as input and returns the secret to which it points.
5+
def resolve_secret_reference():
6+
# Replace this with a real secret reference
7+
secret_reference = "op://vault/item/field"
8+
try:
9+
Secrets.validate_secret_reference(secret_reference)
10+
print("Secret reference resolved successfully")
11+
except Exception as error:
12+
print(error)
13+
14+
if __name__ == "__main__":
15+
resolve_secret_reference()
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
2+
from onepassword.secrets import Secrets
3+
4+
# Validate secret reference to ensure no syntax errors
5+
def validate_secret_reference():
6+
try:
7+
Secrets.validate_secret_reference("op://vault/item/field")
8+
print("Secret reference is of valid syntax")
9+
except Exception as error:
10+
print(error)
11+
12+
if __name__ == "__main__":
13+
validate_secret_reference()

tests/run_all_tests.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# change working directory to the directory of the script
2+
3+
cd "$(dirname "$0")"
4+
5+
# Run all python files in the tests directory
6+
for file in *.py
7+
do
8+
python3 $file
9+
done

tests/test_list_items_in_vaults.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import asyncio
2+
import os
3+
4+
from onepassword.client import Client
5+
6+
async def test_list_items_in_vaults():
7+
print("Starting list_items_in_vaults test")
8+
token = os.getenv("OP_SERVICE_ACCOUNT_TOKEN")
9+
if not token:
10+
raise ValueError("OP_SERVICE_ACCOUNT_TOKEN must be set.")
11+
client = await Client.authenticate(
12+
auth=token,
13+
# Set the following to your own integration name and version.
14+
integration_name="My 1Password Integration",
15+
integration_version="v1.0.0",
16+
)
17+
vaults = await client.vaults.list_all()
18+
async for vault in vaults:
19+
items = await client.items.list_all(vault.id)
20+
async for item in items:
21+
print(item.title)
22+
23+
print("list_items_in_vaults test completed successfully")
24+
25+
if __name__ == "__main__":
26+
asyncio.run(test_list_items_in_vaults())

tests/test_list_vaults.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import asyncio
2+
import os
3+
4+
from onepassword.client import Client
5+
6+
async def test_list_vaults():
7+
print("Starting list_vaults test")
8+
token = os.getenv("OP_SERVICE_ACCOUNT_TOKEN")
9+
if not token:
10+
raise ValueError("OP_SERVICE_ACCOUNT_TOKEN must be set.")
11+
client = await Client.authenticate(
12+
auth=token,
13+
# Set the following to your own integration name and version.
14+
integration_name="My 1Password Integration",
15+
integration_version="v1.0.0",
16+
)
17+
vaults = await client.vaults.list_all()
18+
async for vault in vaults:
19+
print(vault.title)
20+
21+
print("Finished list_vaults test successfully")
22+
23+
if __name__ == "__main__":
24+
asyncio.run(test_list_vaults())
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from onepassword.secrets import Secrets
2+
import os
3+
4+
def test_resolve_secret_reference():
5+
print("Starting resolve_secret_reference test")
6+
test_secret_ref = os.getenv("CORE_SDK_TEST_SECRET_REF")
7+
if not test_secret_ref:
8+
raise ValueError("CORE_SDK_TEST_SECRET_REF must be set.")
9+
Secrets.validate_secret_reference(test_secret_ref)
10+
print("Finished resolve_secret_reference test successfully")
11+
12+
if __name__ == "__main__":
13+
test_resolve_secret_reference()
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from onepassword.secrets import Secrets
2+
3+
# Validate secret reference to ensure no syntax errors
4+
def test_validate_secret_reference():
5+
print("Starting validate_secret_reference test")
6+
Secrets.validate_secret_reference("op://vault/item/field")
7+
print("Finished validate_secret_reference test successfully")
8+
9+
if __name__ == "__main__":
10+
test_validate_secret_reference()

0 commit comments

Comments
 (0)