Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: Lint
on: [pull_request]

jobs:
lint-agentkit:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./cdp-agentkit-core
steps:
- uses: actions/checkout@v3

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'

- name: Install Poetry
uses: snok/install-poetry@v1
with:
version: latest
virtualenvs-create: true
virtualenvs-in-project: true

- name: Load cached venv
id: cached-poetry-dependencies
uses: actions/cache@v3
with:
path: ./cdp-agentkit-core/.venv
key: venv-agentkit-${{ runner.os }}-${{ hashFiles('cdp-agentkit-core/poetry.lock') }}

- name: Install dependencies
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
run: poetry install --with dev

- name: Run linters
run: poetry run make lint

lint-langchain:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./cdp-langchain
steps:
- uses: actions/checkout@v3

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'

- name: Install Poetry
uses: snok/install-poetry@v1
with:
version: latest
virtualenvs-create: true
virtualenvs-in-project: true

- name: Load cached venv
id: cached-poetry-dependencies
uses: actions/cache@v3
with:
path: ./cdp-langchain/.venv
key: venv-langchain-${{ runner.os }}-${{ hashFiles('cdp-langchain/poetry.lock') }}

- name: Install dependencies
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
run: poetry install --with dev

- name: Run linters
run: poetry run make lint
79 changes: 79 additions & 0 deletions .github/workflows/unit_tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
name: Run Unit Tests
on: [pull_request]

jobs:
test-agentkit:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./cdp-agentkit-core
strategy:
matrix:
python: ['3.10', '3.11', '3.12']

steps:
- uses: actions/checkout@v3

- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}

- name: Install Poetry
uses: snok/install-poetry@v1
with:
version: latest
virtualenvs-create: true
virtualenvs-in-project: true

- name: Load cached venv
id: cached-poetry-dependencies
uses: actions/cache@v3
with:
path: ./cdp-agentkit-core/.venv
key: venv-agentkit-${{ runner.os }}-${{ matrix.python }}-${{ hashFiles('cdp-agentkit-core/poetry.lock') }}

- name: Install dependencies
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
run: poetry install --with dev

- name: Run tests
run: poetry run make test

test-langchain:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./cdp-langchain
strategy:
matrix:
python: ['3.10', '3.11', '3.12']

steps:
- uses: actions/checkout@v3

- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}

- name: Install Poetry
uses: snok/install-poetry@v1
with:
version: latest
virtualenvs-create: true
virtualenvs-in-project: true

- name: Load cached venv
id: cached-poetry-dependencies
uses: actions/cache@v3
with:
path: ./cdp-langchain/.venv
key: venv-langchain-${{ runner.os }}-${{ matrix.python }}-${{ hashFiles('cdp-langchain/poetry.lock') }}

- name: Install dependencies
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
run: poetry install --with dev

- name: Run tests
run: poetry run make test
4 changes: 4 additions & 0 deletions cdp-langchain/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,7 @@ lint:
.PHONY: lint-fix
lint-fix:
ruff check . --fix

.PHONY: test
test:
pytest
2 changes: 1 addition & 1 deletion cdp-langchain/tests/tools/test_cdp_action.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class TestArgsSchema(BaseModel):
@pytest.fixture
def mock_cdp_agentkit_wrapper():
"""Fixture for mocked CDP Agentkit wrapper."""
with patch("langchain_cdp.tools.cdp_action.CdpAgentkitWrapper") as mock:
with patch("cdp_langchain.tools.cdp_action.CdpAgentkitWrapper") as mock:
cdp_agentkit_wrapper = Mock(spec=CdpAgentkitWrapper)
mock.return_value = cdp_agentkit_wrapper
yield cdp_agentkit_wrapper
Expand Down
26 changes: 16 additions & 10 deletions cdp-langchain/tests/utils/test_cdp_agentkit_wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,14 @@ def test_missing_environment_variables(monkeypatch: pytest.MonkeyPatch):
def test_cdp_sdk_import_error():
"""Test handling of missing CDP SDK."""
with patch.dict("sys.modules", {"cdp": None}):
test_values = {
"cdp_api_key_name": "test-cdp-api-key-name",
"cdp_api_key_private_key": "test-cdp-api-key-private-key",
"network_id": "base-sepolia",
}

with pytest.raises(ImportError) as exc_info:
CdpAgentkitWrapper()
CdpAgentkitWrapper(**test_values)

assert "CDP SDK is not installed" in str(exc_info.value)

Expand All @@ -143,19 +149,19 @@ def test_cdp_sdk_import_error():
(
"get_wallet_details",
{},
"langchain_cdp.utils.cdp_agentkit_wrapper.CdpAgentkitWrapper.get_wallet_details_wrapper",
"cdp_langchain.utils.cdp_agentkit_wrapper.CdpAgentkitWrapper.get_wallet_details_wrapper",
"Got wallet details successfully",
),
(
"get_balance",
{"asset_id": "usdc"},
"langchain_cdp.utils.cdp_agentkit_wrapper.CdpAgentkitWrapper.get_balance_wrapper",
"cdp_langchain.utils.cdp_agentkit_wrapper.CdpAgentkitWrapper.get_balance_wrapper",
"Got balance successfully",
),
(
"request_faucet_funds",
{},
"langchain_cdp.utils.cdp_agentkit_wrapper.CdpAgentkitWrapper.request_faucet_funds_wrapper",
"cdp_langchain.utils.cdp_agentkit_wrapper.CdpAgentkitWrapper.request_faucet_funds_wrapper",
"Requested assets from faucet successfully",
),
(
Expand All @@ -166,7 +172,7 @@ def test_cdp_sdk_import_error():
"destination": "example.base.eth",
"gasless": True,
},
"langchain_cdp.utils.cdp_agentkit_wrapper.CdpAgentkitWrapper.transfer_wrapper",
"cdp_langchain.utils.cdp_agentkit_wrapper.CdpAgentkitWrapper.transfer_wrapper",
"Transferred successfully",
),
(
Expand All @@ -176,7 +182,7 @@ def test_cdp_sdk_import_error():
"from_asset_id": "usdc",
"to_asset_id": "weth",
},
"langchain_cdp.utils.cdp_agentkit_wrapper.CdpAgentkitWrapper.trade_wrapper",
"cdp_langchain.utils.cdp_agentkit_wrapper.CdpAgentkitWrapper.trade_wrapper",
"Traded successfully",
),
(
Expand All @@ -186,7 +192,7 @@ def test_cdp_sdk_import_error():
"symbol": "TOKEN",
"total_supply": "1000000",
},
"langchain_cdp.utils.cdp_agentkit_wrapper.CdpAgentkitWrapper.deploy_token_wrapper",
"cdp_langchain.utils.cdp_agentkit_wrapper.CdpAgentkitWrapper.deploy_token_wrapper",
"Deployed token successfully",
),
(
Expand All @@ -195,7 +201,7 @@ def test_cdp_sdk_import_error():
"contract_address": "0xvalidContractAddress",
"destination": "0xvalidAddress",
},
"langchain_cdp.utils.cdp_agentkit_wrapper.CdpAgentkitWrapper.mint_nft_wrapper",
"cdp_langchain.utils.cdp_agentkit_wrapper.CdpAgentkitWrapper.mint_nft_wrapper",
"Minted NFT successfully",
),
(
Expand All @@ -205,15 +211,15 @@ def test_cdp_sdk_import_error():
"symbol": "TEST",
"base_uri": "https://www.test.xyz/metadata/",
},
"langchain_cdp.utils.cdp_agentkit_wrapper.CdpAgentkitWrapper.deploy_nft_wrapper",
"cdp_langchain.utils.cdp_agentkit_wrapper.CdpAgentkitWrapper.deploy_nft_wrapper",
"Minted NFT successfully",
),
(
"register_basename",
{
"basename": "test-basename",
},
"langchain_cdp.utils.cdp_agentkit_wrapper.CdpAgentkitWrapper.register_basename_wrapper",
"cdp_langchain.utils.cdp_agentkit_wrapper.CdpAgentkitWrapper.register_basename_wrapper",
"Registered basename successfully",
),
],
Expand Down