Vip Tests
25 tests — 18 passed, 1 failed, 6 skipped
PASSConnect server is reachablePrerequisites
As a Posit Team administrator
Test procedure
- Given <product> is configured in vip.toml
- When I request the <product> health endpoint
- Then the server responds with a successful status code
PASSWorkbench server is reachablePrerequisites
As a Posit Team administrator
Test procedure
- Given <product> is configured in vip.toml
- When I request the <product> health endpoint
- Then the server responds with a successful status code
PASSPackage Manager server is reachablePrerequisites
As a Posit Team administrator
Test procedure
- Given <product> is configured in vip.toml
- When I request the <product> health endpoint
- Then the server responds with a successful status code
PASSWorkbench server is reachable but not configuredPrerequisites
As a VIP developer
Test procedure
- Given Workbench is expected to be configured
- When I check the Workbench configuration
- Then Workbench should be reachable
PASSConnect version matches configurationPrerequisites
As a Posit Team administrator
Test procedure
- Given Connect is configured in vip.toml with a version expectation
- When I fetch the Connect server version
- Then the Connect version matches the configured value
SKIPWorkbench version matches configurationPrerequisites
As a Posit Team administrator
Test procedure
- Given Workbench is configured in vip.toml with a version expectation
- When I fetch the Workbench server version
- Then the Workbench version matches the configured value
PASSPackage Manager version matches configurationPrerequisites
As a Posit Team administrator
Test procedure
- Given Package Manager is configured in vip.toml with a version expectation
- When I fetch the Package Manager server version
- Then the Package Manager version matches the configured value
PASSUser can log in via the web UIConnect
As a Posit Team administrator
Test procedure
- Given Connect is accessible at the configured URL
- When a user navigates to the Connect login page
- And enters valid credentials
- Then the user is successfully authenticated
- And the Connect dashboard is displayed
PASSAPI key authentication worksConnect
As a Posit Team administrator
Test procedure
- Given Connect is accessible at the configured URL
- And a valid API key is configured
- When I request the current user via the API
- Then the API returns user information
PASSAdmin user exists and has admin privilegesConnect
As a Posit Team administrator
Test procedure
- Given Connect is accessible at the configured URL
- When I retrieve the current user profile
- Then the user has admin privileges
FAILUsers can be listedConnect
As a Posit Team administrator
Test procedure
- Given Connect is accessible at the configured URL
- When I list all users
- Then the user list is not empty
- And the test user exists in the user list
test_list_users: Test user 'testuser' not found in user list: ['__bootstrap_admin__'] assert 'testuser' in ['__bootstrap_admin__']
Full error traceback
fixturefunc = <function check_test_user_in_list at 0x7f8aaac06520>
request = <FixtureRequest for <Function test_list_users>>
kwargs = {'test_username': 'testuser', 'user_list': [{'active_time': '2026-04-21T01:40:06Z', 'confirmed': True, 'created_time': '2026-04-21T01:38:46Z', 'email': '', ...}]}
def call_fixture_func(
fixturefunc: _FixtureFunc[FixtureValue], request: FixtureRequest, kwargs
) -> FixtureValue:
if inspect.isgeneratorfunction(fixturefunc):
fixturefunc = cast(Callable[..., Generator[FixtureValue]], fixturefunc)
generator = fixturefunc(**kwargs)
try:
fixture_result = next(generator)
except StopIteration:
raise ValueError(f"{request.fixturename} did not yield a value") from None
finalizer = functools.partial(_teardown_yield_fixture, fixturefunc, generator)
request.addfinalizer(finalizer)
else:
fixturefunc = cast(Callable[..., FixtureValue], fixturefunc)
> fixture_result = fixturefunc(**kwargs)
^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/_pytest/fixtures.py:915:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
user_list = [{'active_time': '2026-04-21T01:40:06Z', 'confirmed': True, 'created_time': '2026-04-21T01:38:46Z', 'email': '', ...}]
test_username = 'testuser'
@then("the test user exists in the user list")
def check_test_user_in_list(user_list, test_username):
usernames = [u.get("username") for u in user_list]
> assert test_username in usernames, (
f"Test user {test_username!r} not found in user list: {usernames}"
)
E AssertionError: Test user 'testuser' not found in user list: ['__bootstrap_admin__']
E assert 'testuser' in ['__bootstrap_admin__']
src/vip_tests/connect/test_users.py:53: AssertionErrorPASSGroups can be listedConnect
As a Posit Team administrator
Test procedure
- Given Connect is accessible at the configured URL
- When I list all groups
- Then the response is successful
SKIPExpected R versions are available on ConnectConnect
As a Posit Team administrator
Test procedure
- Given Connect is accessible at the configured URL
- And expected R versions are specified in vip.toml
- When I query Connect for available R versions
- Then all expected R versions are present
SKIPExpected Python versions are available on ConnectConnect
As a Posit Team administrator
Test procedure
- Given Connect is accessible at the configured URL
- And expected Python versions are specified in vip.toml
- When I query Connect for available Python versions
- Then all expected Python versions are present
PASSExpected Quarto versions are availableConnect
As a Posit Team administrator
Test procedure
- Given Connect is accessible at the configured URL
- When I query Connect for available Quarto versions
- Then at least one Quarto version is available
PASSConnect system checks can be run and the report downloadedConnect
As a Posit Team administrator
Test procedure
- Given Connect is accessible at the configured URL
- And a valid API key is configured
- When I trigger a new system check run via the Connect API
- Then the system check report is returned
- And I can download the system check report artifact
PASSUnauthenticated API request returns 401Security
As a Posit Team administrator
Test procedure
- Given Connect is configured in vip.toml
- When I make an unauthenticated API request to Connect
- Then the response status is 401
PASSInvalid API key returns 401Security
As a Posit Team administrator
Test procedure
- Given Connect is configured in vip.toml
- When I make an API request to Connect with an invalid key
- Then the response status is 401
PASSNon-existent endpoint returns 404Security
As a Posit Team administrator
Test procedure
- Given Connect is configured in vip.toml
- When I request a non-existent endpoint on Connect
- Then the response status is 404
PASSUser can log in to Workbench via the web UIWorkbench
As a Posit Team administrator
Test procedure
- Given Workbench is accessible at the configured URL
- When a user navigates to the Workbench login page and enters valid credentials
- Then the Workbench homepage is displayed
- And the current user is shown in the header
PASSCRAN mirror is accessiblePackage Manager
As a Posit Team administrator
Test procedure
- Given Package Manager is running
- When I query the CRAN repository for the "Matrix" package
- Then the package is found in the repository
SKIPPyPI mirror is accessiblePackage Manager
As a Posit Team administrator
Test procedure
- Given Package Manager is running
- When I query the PyPI repository for the "requests" package
- Then the package is found in the repository
SKIPBioconductor mirror is accessiblePackage Manager
As a Posit Team administrator
Test procedure
- Given Package Manager is running
- When I query the Bioconductor repository for the "BiocGenerics" package
- Then the package is found in the repository
SKIPOpenVSX mirror is accessiblePackage Manager
As a Posit Team administrator
Test procedure
- Given Package Manager is running
- When I query the OpenVSX repository for the "golang.Go" extension
- Then the package is found in the repository
PASSAt least one repository is configuredPackage Manager
As a Posit Team administrator
Test procedure
- Given Package Manager is running
- When I list all repositories
- Then at least one repository exists