mirror of https://github.com/artifacthub/hub.git
463 lines
11 KiB
SQL
463 lines
11 KiB
SQL
-- Start transaction and plan tests
|
|
begin;
|
|
select plan(132);
|
|
|
|
-- Check default_text_search_config is correct
|
|
select results_eq(
|
|
$$ select current_setting('default_text_search_config')::text $$,
|
|
$$ values ('pg_catalog.simple'::text) $$,
|
|
'default_text_search_config is pg_catalog.simple'
|
|
);
|
|
|
|
-- Check pgcrypto extension exist
|
|
select has_extension('pgcrypto');
|
|
|
|
-- Check expected tables exist
|
|
select tables_are(array[
|
|
'api_key',
|
|
'email_verification_code',
|
|
'event',
|
|
'event_kind',
|
|
'image',
|
|
'image_version',
|
|
'maintainer',
|
|
'notification',
|
|
'opt_out',
|
|
'organization',
|
|
'package',
|
|
'package__maintainer',
|
|
'repository',
|
|
'repository_kind',
|
|
'session',
|
|
'snapshot',
|
|
'subscription',
|
|
'user',
|
|
'user_starred_package',
|
|
'user__organization',
|
|
'version_functions',
|
|
'version_schema',
|
|
'webhook',
|
|
'webhook__event_kind',
|
|
'webhook__package'
|
|
]);
|
|
|
|
-- Check tables have expected columns
|
|
select columns_are('api_key', array[
|
|
'api_key_id',
|
|
'name',
|
|
'key',
|
|
'user_id',
|
|
'created_at'
|
|
]);
|
|
select columns_are('email_verification_code', array[
|
|
'email_verification_code_id',
|
|
'user_id',
|
|
'created_at'
|
|
]);
|
|
select columns_are('event', array[
|
|
'event_id',
|
|
'created_at',
|
|
'processed',
|
|
'processed_at',
|
|
'event_kind_id',
|
|
'package_id',
|
|
'package_version',
|
|
'repository_id',
|
|
'data'
|
|
]);
|
|
select columns_are('event_kind', array[
|
|
'event_kind_id',
|
|
'name'
|
|
]);
|
|
select columns_are('image', array[
|
|
'image_id',
|
|
'original_hash'
|
|
]);
|
|
select columns_are('image_version', array[
|
|
'image_id',
|
|
'version',
|
|
'data'
|
|
]);
|
|
select columns_are('maintainer', array[
|
|
'maintainer_id',
|
|
'name',
|
|
'email'
|
|
]);
|
|
select columns_are('notification', array[
|
|
'notification_id',
|
|
'created_at',
|
|
'processed',
|
|
'processed_at',
|
|
'error',
|
|
'event_id',
|
|
'user_id',
|
|
'webhook_id'
|
|
]);
|
|
select columns_are('opt_out', array[
|
|
'opt_out_id',
|
|
'user_id',
|
|
'repository_id',
|
|
'event_kind_id'
|
|
]);
|
|
select columns_are('organization', array[
|
|
'organization_id',
|
|
'name',
|
|
'display_name',
|
|
'description',
|
|
'home_url',
|
|
'logo_image_id',
|
|
'created_at',
|
|
'authorization_enabled',
|
|
'predefined_policy',
|
|
'custom_policy',
|
|
'policy_data'
|
|
]);
|
|
select columns_are('package', array[
|
|
'package_id',
|
|
'name',
|
|
'normalized_name',
|
|
'latest_version',
|
|
'logo_url',
|
|
'logo_image_id',
|
|
'stars',
|
|
'tsdoc',
|
|
'is_operator',
|
|
'channels',
|
|
'default_channel',
|
|
'repository_id'
|
|
]);
|
|
select columns_are('package__maintainer', array[
|
|
'package_id',
|
|
'maintainer_id'
|
|
]);
|
|
select columns_are('repository', array[
|
|
'repository_id',
|
|
'name',
|
|
'display_name',
|
|
'url',
|
|
'branch',
|
|
'auth_user',
|
|
'auth_pass',
|
|
'last_tracking_ts',
|
|
'last_tracking_errors',
|
|
'verified_publisher',
|
|
'official',
|
|
'disabled',
|
|
'scanner_disabled',
|
|
'digest',
|
|
'repository_kind_id',
|
|
'user_id',
|
|
'organization_id'
|
|
]);
|
|
select columns_are('repository_kind', array[
|
|
'repository_kind_id',
|
|
'name'
|
|
]);
|
|
select columns_are('session', array[
|
|
'session_id',
|
|
'user_id',
|
|
'ip',
|
|
'user_agent',
|
|
'created_at'
|
|
]);
|
|
select columns_are('snapshot', array[
|
|
'package_id',
|
|
'version',
|
|
'display_name',
|
|
'description',
|
|
'keywords',
|
|
'home_url',
|
|
'app_version',
|
|
'digest',
|
|
'readme',
|
|
'install',
|
|
'links',
|
|
'crds',
|
|
'crds_examples',
|
|
'security_report',
|
|
'security_report_created_at',
|
|
'security_report_summary',
|
|
'capabilities',
|
|
'data',
|
|
'deprecated',
|
|
'license',
|
|
'signed',
|
|
'content_url',
|
|
'containers_images',
|
|
'provider',
|
|
'values_schema',
|
|
'changes',
|
|
'contains_security_updates',
|
|
'prerelease',
|
|
'created_at'
|
|
]);
|
|
select columns_are('subscription', array[
|
|
'user_id',
|
|
'package_id',
|
|
'event_kind_id'
|
|
]);
|
|
select columns_are('user', array[
|
|
'user_id',
|
|
'alias',
|
|
'first_name',
|
|
'last_name',
|
|
'email',
|
|
'email_verified',
|
|
'password',
|
|
'profile_image_id',
|
|
'created_at'
|
|
]);
|
|
select columns_are('user_starred_package', array[
|
|
'user_id',
|
|
'package_id'
|
|
]);
|
|
select columns_are('user__organization', array[
|
|
'user_id',
|
|
'organization_id',
|
|
'confirmed'
|
|
]);
|
|
select columns_are('version_functions', array[
|
|
'version'
|
|
]);
|
|
select columns_are('version_schema', array[
|
|
'version'
|
|
]);
|
|
select columns_are('webhook', array[
|
|
'webhook_id',
|
|
'name',
|
|
'description',
|
|
'url',
|
|
'secret',
|
|
'content_type',
|
|
'template',
|
|
'active',
|
|
'created_at',
|
|
'updated_at',
|
|
'user_id',
|
|
'organization_id'
|
|
]);
|
|
select columns_are('webhook__event_kind', array[
|
|
'webhook_id',
|
|
'event_kind_id'
|
|
]);
|
|
select columns_are('webhook__package', array[
|
|
'webhook_id',
|
|
'package_id'
|
|
]);
|
|
|
|
-- Check tables have expected indexes
|
|
select indexes_are('api_key', array[
|
|
'api_key_pkey',
|
|
'api_key_user_id_idx'
|
|
]);
|
|
select indexes_are('email_verification_code', array[
|
|
'email_verification_code_pkey',
|
|
'email_verification_code_user_id_key'
|
|
]);
|
|
select indexes_are('event', array[
|
|
'event_pkey',
|
|
'event_not_processed_idx'
|
|
]);
|
|
select indexes_are('image', array[
|
|
'image_pkey',
|
|
'image_original_hash_key'
|
|
]);
|
|
select indexes_are('image_version', array[
|
|
'image_version_pkey'
|
|
]);
|
|
select indexes_are('maintainer', array[
|
|
'maintainer_pkey',
|
|
'maintainer_email_key'
|
|
]);
|
|
select indexes_are('notification', array[
|
|
'notification_pkey',
|
|
'notification_not_processed_idx',
|
|
'notification_event_id_user_id_key',
|
|
'notification_event_id_webhook_id_key',
|
|
'notification_webhook_id_created_at_idx'
|
|
]);
|
|
select indexes_are('opt_out', array[
|
|
'opt_out_pkey',
|
|
'opt_out_user_id_repository_id_event_kind_id_key'
|
|
]);
|
|
select indexes_are('organization', array[
|
|
'organization_pkey',
|
|
'organization_name_key'
|
|
]);
|
|
select indexes_are('package', array[
|
|
'package_pkey',
|
|
'package_tsdoc_idx',
|
|
'package_repository_id_idx',
|
|
'package_repository_id_name_key',
|
|
'package_has_logo_image_id_idx'
|
|
]);
|
|
select indexes_are('package__maintainer', array[
|
|
'package__maintainer_pkey'
|
|
]);
|
|
select indexes_are('repository', array[
|
|
'repository_pkey',
|
|
'repository_name_key',
|
|
'repository_url_idx',
|
|
'repository_repository_kind_id_idx',
|
|
'repository_user_id_idx',
|
|
'repository_organization_id_idx'
|
|
]);
|
|
select indexes_are('repository_kind', array[
|
|
'repository_kind_pkey'
|
|
]);
|
|
select indexes_are('session', array[
|
|
'session_pkey'
|
|
]);
|
|
select indexes_are('snapshot', array[
|
|
'snapshot_pkey',
|
|
'snapshot_package_id_digest_key',
|
|
'snapshot_not_deprecated_with_readme_idx'
|
|
]);
|
|
select indexes_are('subscription', array[
|
|
'subscription_pkey'
|
|
]);
|
|
select indexes_are('user', array[
|
|
'user_pkey',
|
|
'user_alias_key',
|
|
'user_email_key'
|
|
]);
|
|
select indexes_are('user__organization', array[
|
|
'user__organization_pkey'
|
|
]);
|
|
select indexes_are('user_starred_package', array[
|
|
'user_starred_package_pkey'
|
|
]);
|
|
select indexes_are('webhook', array[
|
|
'webhook_pkey',
|
|
'webhook_user_id_idx',
|
|
'webhook_organization_id_idx'
|
|
]);
|
|
select indexes_are('webhook__event_kind', array[
|
|
'webhook__event_kind_pkey'
|
|
]);
|
|
select indexes_are('webhook__package', array[
|
|
'webhook__package_pkey'
|
|
]);
|
|
|
|
-- Check expected functions exist
|
|
-- API keys
|
|
select has_function('add_api_key');
|
|
select has_function('delete_api_key');
|
|
select has_function('get_api_key');
|
|
select has_function('get_user_api_keys');
|
|
select has_function('update_api_key');
|
|
-- Authz
|
|
select has_function('notify_authorization_policies_updates');
|
|
-- Events
|
|
select has_function('get_pending_event');
|
|
-- Images
|
|
select has_function('get_image');
|
|
select has_function('register_image');
|
|
-- Notifications
|
|
select has_function('add_notification');
|
|
select has_function('get_pending_notification');
|
|
select has_function('update_notification_status');
|
|
-- Organizations
|
|
select has_function('add_organization');
|
|
select has_function('add_organization_member');
|
|
select has_function('confirm_organization_membership');
|
|
select has_function('delete_organization_member');
|
|
select has_function('get_authorization_policies');
|
|
select has_function('get_authorization_policy');
|
|
select has_function('get_organization');
|
|
select has_function('get_organization_members');
|
|
select has_function('get_user_organizations');
|
|
select has_function('update_authorization_policy');
|
|
select has_function('update_organization');
|
|
select has_function('user_belongs_to_organization');
|
|
-- Packages
|
|
select has_function('generate_package_tsdoc');
|
|
select has_function('get_harbor_replication_dump');
|
|
select has_function('get_package');
|
|
select has_function('get_package_changelog');
|
|
select has_function('get_package_summary');
|
|
select has_function('get_packages_starred_by_user');
|
|
select has_function('get_package_stars');
|
|
select has_function('get_packages_stats');
|
|
select has_function('get_random_packages');
|
|
select has_function('get_snapshots_to_scan');
|
|
select has_function('register_package');
|
|
select has_function('search_packages');
|
|
select has_function('search_packages_monocular');
|
|
select has_function('semver_gt');
|
|
select has_function('semver_gte');
|
|
select has_function('toggle_star');
|
|
select has_function('update_snapshot_security_report');
|
|
select has_function('unregister_package');
|
|
-- Repositories
|
|
select has_function('add_repository');
|
|
select has_function('delete_repository');
|
|
select has_function('get_all_repositories');
|
|
select has_function('get_repositories_by_kind');
|
|
select has_function('get_repository_by_id');
|
|
select has_function('get_repository_by_name');
|
|
select has_function('get_repository_packages_digest');
|
|
select has_function('get_repository_summary');
|
|
select has_function('get_org_repositories');
|
|
select has_function('get_user_repositories');
|
|
select has_function('set_last_tracking_results');
|
|
select has_function('set_verified_publisher');
|
|
select has_function('transfer_repository');
|
|
select has_function('update_repository');
|
|
-- Subscriptions
|
|
select has_function('add_opt_out');
|
|
select has_function('add_subscription');
|
|
select has_function('delete_opt_out');
|
|
select has_function('delete_subscription');
|
|
select has_function('get_package_subscriptors');
|
|
select has_function('get_repository_subscriptors');
|
|
select has_function('get_user_opt_out_entries');
|
|
select has_function('get_user_package_subscriptions');
|
|
select has_function('get_user_subscriptions');
|
|
-- Users
|
|
select has_function('check_user_alias_availability');
|
|
select has_function('get_user_profile');
|
|
select has_function('register_session');
|
|
select has_function('register_user');
|
|
select has_function('update_user_password');
|
|
select has_function('update_user_profile');
|
|
select has_function('verify_email');
|
|
-- Webhooks
|
|
select has_function('add_webhook');
|
|
select has_function('delete_webhook');
|
|
select has_function('get_webhook');
|
|
select has_function('get_org_webhooks');
|
|
select has_function('get_user_webhooks');
|
|
select has_function('get_webhooks_subscribed_to_package');
|
|
select has_function('update_webhook');
|
|
select has_function('user_has_access_to_webhook');
|
|
|
|
-- Check repository kinds exist
|
|
select results_eq(
|
|
'select * from repository_kind',
|
|
$$ values
|
|
(0, 'Helm charts'),
|
|
(1, 'Falco rules'),
|
|
(2, 'OPA policies'),
|
|
(3, 'OLM operators'),
|
|
(4, 'Tinkerbell actions')
|
|
$$,
|
|
'Repository kinds should exist'
|
|
);
|
|
|
|
-- Check event kinds exist
|
|
select results_eq(
|
|
'select * from event_kind',
|
|
$$ values
|
|
(0, 'New package release'),
|
|
(1, 'Security alert'),
|
|
(2, 'Repository tracking errors'),
|
|
(3, 'Repository ownership claim')
|
|
$$,
|
|
'Event kinds should exist'
|
|
);
|
|
|
|
-- Finish tests and rollback transaction
|
|
select * from finish();
|
|
rollback;
|