UBERF-11414: Integrations (#9610)

* UBERF-11414: Use common integration kind

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Allow multiple gmail

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Merge with develop

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Refactor integration kinds

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Add integrations package

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Integrations

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Integration state and config

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Add integration events

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Refresh integration states

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Rename to integration-client

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Add filter button

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Add translations for filters

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Synced channels count

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Actions

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Add isLoading for connect

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Create connection and integration

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Use social id from hulygram

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Remove old integrations

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Gmail state

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Gmail state and disconnect all handler

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Add tests

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Formatting

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Gmail sync state

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix rush check

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix gmail tests

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix calendar actions and config

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Calendar state

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Access config

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Github integration state

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix svelte errors

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix formatting

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix typos

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix validate

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix translations

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Retry on network issues

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Artem Savchenko <armisav@gmail.com>
This commit is contained in:
Artyom Savchenko
2025-08-04 15:14:06 +07:00
committed by GitHub
parent 39c40093e0
commit 7e92c12073
175 changed files with 6391 additions and 875 deletions
+10 -10
View File
@@ -1,7 +1,7 @@
import { expect, test } from '@playwright/test'
import { faker } from '@faker-js/faker'
import { Integration, IntegrationSecret } from '@hcengineering/account'
import { buildSocialIdString, SocialIdType } from '@hcengineering/core'
import { buildSocialIdString, IntegrationKind, SocialIdType } from '@hcengineering/core'
import { PlatformUser } from './utils'
import { getAdminAccountClient } from './API/AccountClient'
@@ -39,7 +39,7 @@ test.describe('integrations in accounts tests', () => {
// Test data setup
const integration1: Integration = {
socialId: personId1,
kind: 'github',
kind: 'github' as IntegrationKind,
workspaceUuid: null, // Global integration
data: {
repo: 'repo1',
@@ -50,7 +50,7 @@ test.describe('integrations in accounts tests', () => {
const integration2: Integration = {
socialId: personId2,
kind: 'telegram-bot',
kind: 'telegram-bot' as IntegrationKind,
workspaceUuid,
data: {
chatId: '123',
@@ -61,7 +61,7 @@ test.describe('integrations in accounts tests', () => {
const integration3: Integration = {
socialId: personId3,
kind: 'mailbox',
kind: 'mailbox' as IntegrationKind,
workspaceUuid,
data: {
email: 'test@example.com',
@@ -98,7 +98,7 @@ test.describe('integrations in accounts tests', () => {
// Create secrets
const secret1: IntegrationSecret = {
socialId: personId1,
kind: 'github',
kind: 'github' as IntegrationKind,
workspaceUuid: null,
key: 'token',
secret: 'github_pat_token_123'
@@ -106,7 +106,7 @@ test.describe('integrations in accounts tests', () => {
const secret2: IntegrationSecret = {
socialId: personId2,
kind: 'telegram-bot',
kind: 'telegram-bot' as IntegrationKind,
workspaceUuid,
key: 'bot_token',
secret: 'telegram_bot_token_123'
@@ -114,7 +114,7 @@ test.describe('integrations in accounts tests', () => {
const secret3: IntegrationSecret = {
socialId: personId2,
kind: 'telegram-bot',
kind: 'telegram-bot' as IntegrationKind,
workspaceUuid,
key: 'api_key',
secret: 'telegram_api_key_123'
@@ -157,11 +157,11 @@ test.describe('integrations in accounts tests', () => {
expect(workspaceIntegrations).toHaveLength(2)
expect(workspaceIntegrations).toEqual(expect.arrayContaining([integration2, integration3]))
const githubIntegrations = await accountClient.listIntegrations({ kind: 'github' })
const githubIntegrations = await accountClient.listIntegrations({ kind: 'github' as IntegrationKind })
expect(githubIntegrations).toHaveLength(1)
expect(githubIntegrations[0]).toEqual(integration1)
const telegramIntegrations = await accountClient.listIntegrations({ kind: 'telegram-bot' })
const telegramIntegrations = await accountClient.listIntegrations({ kind: 'telegram-bot' as IntegrationKind })
expect(telegramIntegrations).toHaveLength(1)
expect(telegramIntegrations[0]).toEqual(integration2)
@@ -176,7 +176,7 @@ test.describe('integrations in accounts tests', () => {
expect(workspaceSecrets).toHaveLength(2)
expect(workspaceSecrets).toEqual(expect.arrayContaining([secret2, secret3]))
const telegramSecrets = await accountClient.listIntegrationsSecrets({ kind: 'telegram-bot' })
const telegramSecrets = await accountClient.listIntegrationsSecrets({ kind: 'telegram-bot' as IntegrationKind })
expect(telegramSecrets).toHaveLength(2)
expect(telegramSecrets).toEqual(expect.arrayContaining([secret2, secret3]))