Skip to content

Commit 97e80e3

Browse files
committed
Add tests with env vars
1 parent b4370b8 commit 97e80e3

File tree

2 files changed

+143
-0
lines changed

2 files changed

+143
-0
lines changed

tests/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
To test, make sure the following env vars are defined:
2+
3+
```sh
4+
export CORE_SDK_TEST_SECRET_REF='op://vault/item/field'
5+
export CORE_SDK_TEST_VAULT_ID=''
6+
```

tests/test.py

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
import asyncio
2+
import os
3+
4+
# [developer-docs.sdk.python.sdk-import]-start
5+
from onepassword import *
6+
# [developer-docs.sdk.python.sdk-import]-end
7+
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.
12+
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.
20+
client = await Client.authenticate(
21+
auth=token,
22+
# Set the following to your own integration name and version.
23+
integration_name="My 1Password Integration",
24+
integration_version="v1.0.0",
25+
)
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.
48+
to_create = ItemCreateParams(
49+
title="MyName",
50+
category="Login",
51+
vaultId = test_vault_id,
52+
fields=[
53+
ItemField(
54+
id="username",
55+
title="username",
56+
field_type="Text",
57+
value="mynameisjeff",
58+
),
59+
ItemField(
60+
id="password",
61+
title="password",
62+
field_type="Concealed",
63+
value="jeff",
64+
),
65+
ItemField(
66+
id="onetimepassword",
67+
title="one-time-password",
68+
field_type="Totp",
69+
section_id="totpsection",
70+
value="otpauth://totp/my-example-otp?secret=jncrjgbdjnrncbjsr&issuer=1Password",
71+
),
72+
],
73+
sections=[
74+
ItemSection(id="", title=""),
75+
ItemSection(id="totpsection", title=""),
76+
],
77+
tags=["test tag 1", "test tag 2"],
78+
websites=[
79+
Website(
80+
label="my custom website",
81+
url="https://example.com",
82+
autofill_behavior="AnywhereOnWebsite",
83+
)
84+
],
85+
)
86+
created_item = await client.items.create(to_create)
87+
# [developer-docs.sdk.python.create-item]-end
88+
89+
print(dict(created_item))
90+
91+
# [developer-docs.sdk.python.resolve-totp-code]-start
92+
# Retrieves a secret from 1Password. Takes a secret reference as input and returns the secret to which it points.
93+
code = await client.secrets.resolve(
94+
f"op://{created_item.vault_id}/{created_item.id}/TOTP_onetimepassword?attribute=totp"
95+
)
96+
print(code)
97+
# [developer-docs.sdk.python.resolve-totp-code]-end
98+
99+
# [developer-docs.sdk.python.get-totp-item-crud]-start
100+
# Fetch a totp code from the item
101+
for f in created_item.fields:
102+
if f.field_type == "Totp":
103+
if f.details.content.error_message is not None:
104+
print(f.details.content.error_message)
105+
else:
106+
print(f.details.content.code)
107+
# [developer-docs.sdk.python.get-totp-item-crud]-end
108+
109+
# [developer-docs.sdk.python.get-item]-start
110+
# Retrieve an item from your vault.
111+
item = await client.items.get(created_item.vault_id, created_item.id)
112+
# [developer-docs.sdk.python.get-item]-end
113+
114+
print(dict(item))
115+
116+
# [developer-docs.sdk.python.update-item]-start
117+
# Update a field in your item
118+
item.fields[0].value = "new_value"
119+
item.websites.append(
120+
Website(
121+
label="my custom website 2",
122+
url="https://example2.com",
123+
autofill_behavior="Never",
124+
),
125+
)
126+
updated_item = await client.items.put(item)
127+
# [developer-docs.sdk.python.update-item]-end
128+
129+
print(dict(updated_item))
130+
# [developer-docs.sdk.python.delete-item]-start
131+
# Delete a item from your vault.
132+
await client.items.delete(created_item.vault_id, updated_item.id)
133+
# [developer-docs.sdk.python.delete-item]-end
134+
135+
136+
if __name__ == "__main__":
137+
asyncio.run(main())

0 commit comments

Comments
 (0)