diff --git a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/api/command/LinkAccountToLdapCmd.java b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/api/command/LinkAccountToLdapCmd.java index d3ab463cffb2..dbf61c006eb7 100644 --- a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/api/command/LinkAccountToLdapCmd.java +++ b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/api/command/LinkAccountToLdapCmd.java @@ -79,7 +79,7 @@ public void execute() throws ServerApiException { if (admin != null) { LdapUser ldapUser = null; try { - ldapUser = _ldapManager.getUser(admin, type, ldapDomain, domainId); + ldapUser = _ldapManager.getUser(admin, getType(), ldapDomain, domainId); } catch (NoLdapUserMatchingQueryException e) { logger.debug("no ldap user matching username {} in the given group/ou", admin, e); } @@ -120,7 +120,7 @@ public Long getDomainId() { } public String getType() { - return type; + return type == null ? LdapManager.LinkType.GROUP.name() : type; } public String getLdapDomain() { diff --git a/plugins/user-authenticators/ldap/src/test/java/org/apache/cloudstack/api/command/LinkAccountToLdapCmdTest.java b/plugins/user-authenticators/ldap/src/test/java/org/apache/cloudstack/api/command/LinkAccountToLdapCmdTest.java index e616bd573789..5816da8f6c42 100644 --- a/plugins/user-authenticators/ldap/src/test/java/org/apache/cloudstack/api/command/LinkAccountToLdapCmdTest.java +++ b/plugins/user-authenticators/ldap/src/test/java/org/apache/cloudstack/api/command/LinkAccountToLdapCmdTest.java @@ -100,4 +100,12 @@ public void execute() throws Exception { assertEquals("accountId", String.valueOf(accountId), result.getAdminId()); assertEquals("accountName", String.valueOf(accountName), result.getAccountName()); } + + @Test + public void getTypeDefaultsToGroup() throws Exception { + assertEquals("GROUP", linkAccountToLdapCmd.getType()); + + setHiddenField(linkAccountToLdapCmd, "type", "OU"); + assertEquals("OU", linkAccountToLdapCmd.getType()); + } } diff --git a/ui/public/locales/ar.json b/ui/public/locales/ar.json index e8e4db66cb59..1509eebd5413 100644 --- a/ui/public/locales/ar.json +++ b/ui/public/locales/ar.json @@ -12,6 +12,8 @@ "label.account.id": "Account ID", "label.account.name": "Account Name", "label.account.specific": "Account-Specific", +"label.account.type.domain.admin": "مسؤول النطاق", +"label.account.type.normal": "عادي (مستخدم)", "label.accounts": "Accounts", "label.accounttype": "Account Type", "label.acl.export": "Export ACL rules", @@ -650,6 +652,7 @@ "label.ldap.group.name": "LDAP Group", "label.level": "Level", "label.limitcpuuse": "CPU Cap", +"label.link.account.to.ldap": "Link Account to LDAP", "label.link.domain.to.ldap": "Link Domain to LDAP", "label.linklocalip": "Control IP Address", "label.load.balancer": "Load Balancer", diff --git a/ui/public/locales/ca.json b/ui/public/locales/ca.json index d3e417eb821e..9bb8d9ff0d0e 100644 --- a/ui/public/locales/ca.json +++ b/ui/public/locales/ca.json @@ -12,6 +12,8 @@ "label.account.id": "Account ID", "label.account.name": "Account Name", "label.account.specific": "Account-Specific", +"label.account.type.domain.admin": "Administrador de domini", +"label.account.type.normal": "Normal (Usuari)", "label.accounts": "Accounts", "label.accounttype": "Account Type", "label.acl.export": "Export ACL rules", @@ -650,6 +652,7 @@ "label.ldap.group.name": "LDAP Group", "label.level": "Level", "label.limitcpuuse": "CPU Cap", +"label.link.account.to.ldap": "Link Account to LDAP", "label.link.domain.to.ldap": "Link Domain to LDAP", "label.linklocalip": "Control IP Address", "label.load.balancer": "Load Balancer", diff --git a/ui/public/locales/de_DE.json b/ui/public/locales/de_DE.json index 2fee92021638..fc0265135631 100644 --- a/ui/public/locales/de_DE.json +++ b/ui/public/locales/de_DE.json @@ -24,6 +24,8 @@ "label.account.id": "Benutzerkonto-ID", "label.account.name": "Benutzerkonto-Name", "label.account.specific": "Besonderheiten des Benutzerkontos", +"label.account.type.domain.admin": "Domänen-Administrator", +"label.account.type.normal": "Normal (Benutzer)", "label.accounts": "Benutzerkonten", "label.accounttype": "Benutzerkontotyp", "label.acl.export": "Export ACL rules", @@ -836,6 +838,7 @@ "label.limit": "Limit", "label.limitcpuuse": "CPU Obergrenze", "label.limits": "Limits konfigurieren", +"label.link.account.to.ldap": "Verbinde Benutzerkonto mit LDAP", "label.link.domain.to.ldap": "Verbinde Domain mit LDAP", "label.linklocalip": "Link-Local IP-Adresse", "label.linux": "Linux", diff --git a/ui/public/locales/el_GR.json b/ui/public/locales/el_GR.json index c55063837529..ea86c1ad13ae 100644 --- a/ui/public/locales/el_GR.json +++ b/ui/public/locales/el_GR.json @@ -39,6 +39,8 @@ "label.account.id": "Αναγνωριστικό λογαριασμού", "label.account.name": "Όνομα λογαριασμού", "label.account.specific": "Ανά λογαριασμό", +"label.account.type.domain.admin": "Διαχειριστής Τομέα", +"label.account.type.normal": "Κανονικός (Χρήστης)", "label.accounts": "Λογαριασμοί", "label.accountstate": "Κατάσταση λογαριασμού", "label.accounttype": "Τύπος λογαριασμού", @@ -1630,6 +1632,7 @@ "label.limits": "Όρια", "label.limits.configure": "Ρύθμιση ορίων", "label.link": "Σύνδεσμος", +"label.link.account.to.ldap": "Σύνδεση λογαριασμού με LDAP", "label.link.domain.to.ldap": "Σύνδεση τομέα με LDAP", "label.linklocalip": "Διεύθυνση IP Link-local/ελέγχου", "label.linux": "Linux", diff --git a/ui/public/locales/en.json b/ui/public/locales/en.json index 0acafc3b8015..cbc284ec4c70 100644 --- a/ui/public/locales/en.json +++ b/ui/public/locales/en.json @@ -40,6 +40,8 @@ "label.account.id": "Account ID", "label.account.name": "Account name", "label.account.specific": "Account-specific", +"label.account.type.domain.admin": "Domain Admin", +"label.account.type.normal": "Normal (User)", "label.accounts": "Accounts", "label.accountstate": "Account state", "label.accounttype": "Account type", @@ -1625,6 +1627,7 @@ "label.limits": "Limits", "label.limits.configure": "Configure limits", "label.link": "Link", +"label.link.account.to.ldap": "Link account to LDAP", "label.link.domain.to.ldap": "Link domain to LDAP", "label.linklocalip": "Link-local/Control IP address", "label.linux": "Linux", diff --git a/ui/public/locales/es.json b/ui/public/locales/es.json index b7a409adad1e..33e346873514 100644 --- a/ui/public/locales/es.json +++ b/ui/public/locales/es.json @@ -12,6 +12,8 @@ "label.account.id": "ID de la cuenta", "label.account.name": "Nombre de cuenta", "label.account.specific": "espec\u00edficas de la cuenta", +"label.account.type.domain.admin": "Administrador de dominio", +"label.account.type.normal": "Normal (Usuario)", "label.accounts": "Cuentas", "label.accounttype": "Tipo de Cuenta", "label.acl.export": "Export ACL rules", @@ -667,6 +669,7 @@ "label.ldap.group.name": "Grupo LDAP", "label.level": "Nivel", "label.limitcpuuse": "CPU Cap", +"label.link.account.to.ldap": "Enlazar Cuenta a LDAP", "label.link.domain.to.ldap": "Enlazar Dominio a LDAP", "label.linklocalip": "Direcci\u00f3n IP de Enlace Local", "label.load.balancer": "Balanceador de carga", diff --git a/ui/public/locales/fr_FR.json b/ui/public/locales/fr_FR.json index 424f4749aa35..63fefbc049fb 100644 --- a/ui/public/locales/fr_FR.json +++ b/ui/public/locales/fr_FR.json @@ -12,6 +12,8 @@ "label.account.id": "ID de compte", "label.account.name": "Nom de compte", "label.account.specific": "Sp\u00e9cifique au compte", +"label.account.type.domain.admin": "Administrateur de domaine", +"label.account.type.normal": "Normal (Utilisateur)", "label.accounts": "Comptes", "label.accounttype": "Type Compte", "label.acl.export": "Export ACL rules", @@ -650,6 +652,7 @@ "label.ldap.group.name": "Groupe LDAP", "label.level": "Niveau", "label.limitcpuuse": "Limitation CPU", +"label.link.account.to.ldap": "Lien Compte vers LDAP", "label.link.domain.to.ldap": "Lien Domaine vers LDAP", "label.linklocalip": "Adresse IP lien local", "label.load.balancer": "R\u00e9partiteur de charge", diff --git a/ui/public/locales/hi.json b/ui/public/locales/hi.json index 9d7440b92626..9a04301378ae 100644 --- a/ui/public/locales/hi.json +++ b/ui/public/locales/hi.json @@ -3,6 +3,8 @@ "label.access": "एक्सेस", "label.accesskey": "एक्सेस की", "label.account": "खाता", +"label.account.type.domain.admin": "डोमेन व्यवस्थापक", +"label.account.type.normal": "सामान्य (उपयोगकर्ता)", "label.accounts": "लेखा", "label.accounttype": "खाता प्रकार", "label.aclid": "ACL", diff --git a/ui/public/locales/hu.json b/ui/public/locales/hu.json index ae58379d343c..c22d5c521e6a 100644 --- a/ui/public/locales/hu.json +++ b/ui/public/locales/hu.json @@ -12,6 +12,8 @@ "label.account.id": "Sz\u00e1mla azonos\u00edt\u00f3", "label.account.name": "Sz\u00e1mla n\u00e9v", "label.account.specific": "Sz\u00e1mla-specifikus", +"label.account.type.domain.admin": "Tartomány rendszergazda", +"label.account.type.normal": "Normál (Felhasználó)", "label.accounts": "Sz\u00e1ml\u00e1k", "label.accounttype": "Sz\u00e1mla t\u00edpus", "label.acl.export": "Export ACL rules", @@ -650,6 +652,7 @@ "label.ldap.group.name": "LDAP csoport", "label.level": "Szint", "label.limitcpuuse": "CPU Cap", +"label.link.account.to.ldap": "Link Account to LDAP", "label.link.domain.to.ldap": "Link Domain to LDAP", "label.linklocalip": "Control IP Address", "label.load.balancer": "Terhel\u00e9seloszt\u00f3", diff --git a/ui/public/locales/it_IT.json b/ui/public/locales/it_IT.json index a2907b71f235..7bb3ed88ac3b 100644 --- a/ui/public/locales/it_IT.json +++ b/ui/public/locales/it_IT.json @@ -12,6 +12,8 @@ "label.account.id": "ID dell'Account", "label.account.name": "Nome Account", "label.account.specific": "Specifico dell'Account", +"label.account.type.domain.admin": "Amministratore di dominio", +"label.account.type.normal": "Normale (Utente)", "label.accounts": "Utenti", "label.accounttype": "Account Type", "label.acl.export": "Export ACL rules", @@ -650,6 +652,7 @@ "label.ldap.group.name": "LDAP Group", "label.level": "Livello", "label.limitcpuuse": "Limite CPU", +"label.link.account.to.ldap": "Link Account to LDAP", "label.link.domain.to.ldap": "Link Domain to LDAP", "label.linklocalip": "Control IP Address", "label.load.balancer": "Load Balancer", diff --git a/ui/public/locales/ja_JP.json b/ui/public/locales/ja_JP.json index b7f32d7a2e12..3272c52d9822 100644 --- a/ui/public/locales/ja_JP.json +++ b/ui/public/locales/ja_JP.json @@ -53,6 +53,8 @@ "label.account.id": "アカウントID", "label.account.name": "アカウント名", "label.account.specific": "アカウント固有", + "label.account.type.domain.admin": "ドメイン管理者", + "label.account.type.normal": "通常 (ユーザー)", "label.accounts": "アカウント", "label.accounttype": "アカウントタイプ", "label.access.kubernetes.nodes": "Kubernetesノードに接続", @@ -1316,6 +1318,7 @@ "label.limit": "制限", "label.limitcpuuse": "CPUキャップ", "label.limits": "制限設定", + "label.link.account.to.ldap": "アカウントをLDAPにリンクする", "label.link.domain.to.ldap": "ドメインをLDAPにリンクする", "label.linklocalip": "リンクローカルIPアドレス", "label.linux": "Linux", diff --git a/ui/public/locales/ko_KR.json b/ui/public/locales/ko_KR.json index a951b859b48e..fd1aeb13301e 100644 --- a/ui/public/locales/ko_KR.json +++ b/ui/public/locales/ko_KR.json @@ -28,6 +28,8 @@ "label.account.id": "\uacc4\uc815 ID", "label.account.name": "\uacc4\uc815 \uc774\ub984", "label.account.specific": "\uace0\uc720 \uacc4\uc815", +"label.account.type.domain.admin": "도메인 관리자", +"label.account.type.normal": "일반 (사용자)", "label.accounts": "\uacc4\uc815", "label.accounttype": "\uacc4\uc815 \uc720\ud615", "label.acl.export": "ACL \ub0b4\ubcf4\ub0b4\uae30", @@ -868,6 +870,7 @@ "label.limit": "\uc81c\ud55c", "label.limitcpuuse": "CPU \uc81c\ud55c", "label.limits": "\uc81c\ud55c \uad6c\uc131", +"label.link.account.to.ldap": "LDAP에 계정 연결", "label.link.domain.to.ldap": "LDAP\uc5d0 \ub3c4\uba54\uc778 \uc5f0\uacb0", "label.linklocalip": "\ub85c\uceec \uc5f0\uacb0 IP \uc8fc\uc18c", "label.linux": "Linux", diff --git a/ui/public/locales/nb_NO.json b/ui/public/locales/nb_NO.json index 586d1fc5b259..d3828ed91a58 100644 --- a/ui/public/locales/nb_NO.json +++ b/ui/public/locales/nb_NO.json @@ -12,6 +12,8 @@ "label.account.id": "Konto ID", "label.account.name": "Kontonavn", "label.account.specific": "Kontospesifikk", +"label.account.type.domain.admin": "Domeneadministrator", +"label.account.type.normal": "Normal (Bruker)", "label.accounts": "Kontoer", "label.accounttype": "Kontotype", "label.acl.export": "Export ACL rules", @@ -650,6 +652,7 @@ "label.ldap.group.name": "LDAP Gruppe", "label.level": "Niv\u00e5", "label.limitcpuuse": "CPU begrensning", +"label.link.account.to.ldap": "Knytt konto til LDAP", "label.link.domain.to.ldap": "Knytt domene til LDAP", "label.linklocalip": "Link-lokal IP-adresse", "label.load.balancer": "Lastbalanserer", diff --git a/ui/public/locales/nl_NL.json b/ui/public/locales/nl_NL.json index 15b1bbb13941..758bdb2ee00f 100644 --- a/ui/public/locales/nl_NL.json +++ b/ui/public/locales/nl_NL.json @@ -12,6 +12,8 @@ "label.account.id": "Account ID", "label.account.name": "Account Naam", "label.account.specific": "Account-specifiek", +"label.account.type.domain.admin": "Domeinbeheerder", +"label.account.type.normal": "Normaal (Gebruiker)", "label.accounts": "Accounts", "label.accounttype": "Account type", "label.acl.export": "Export ACL rules", @@ -651,6 +653,7 @@ "label.ldap.group.name": "LDAP Groep", "label.level": "Level", "label.limitcpuuse": "CPU Cap", +"label.link.account.to.ldap": "link account aan LDAP", "label.link.domain.to.ldap": "link domein aan LDAP", "label.linklocalip": "Control IP Adres", "label.load.balancer": "Load Balancer", diff --git a/ui/public/locales/pl.json b/ui/public/locales/pl.json index fbbbf612bc1d..f089b6cd441e 100644 --- a/ui/public/locales/pl.json +++ b/ui/public/locales/pl.json @@ -12,6 +12,8 @@ "label.account.id": "ID konta", "label.account.name": "Nazwa konta", "label.account.specific": "Account-Specific", +"label.account.type.domain.admin": "Administrator domeny", +"label.account.type.normal": "Zwykły (Użytkownik)", "label.accounts": "Konta", "label.accounttype": "Account Type", "label.acl.export": "Export ACL rules", @@ -650,6 +652,7 @@ "label.ldap.group.name": "LDAP Group", "label.level": "Poziom", "label.limitcpuuse": "CPU Cap", +"label.link.account.to.ldap": "Link Account to LDAP", "label.link.domain.to.ldap": "Link Domain to LDAP", "label.linklocalip": "Control IP Address", "label.load.balancer": "Load Balancer", diff --git a/ui/public/locales/pt_BR.json b/ui/public/locales/pt_BR.json index 1efd99f40d16..154c046099db 100644 --- a/ui/public/locales/pt_BR.json +++ b/ui/public/locales/pt_BR.json @@ -36,6 +36,8 @@ "label.account.id": "ID da conta", "label.account.name": "Nome da conta", "label.account.specific": "Espec\u00edfico da conta", +"label.account.type.domain.admin": "Administrador de domínio", +"label.account.type.normal": "Normal (Usuário)", "label.accounts": "Contas", "label.accountstate": "Estado da conta", "label.accounttype": "Tipo de conta", @@ -1388,6 +1390,7 @@ "label.limits": "Configurar limites", "label.limits.configure": "Configurar limites", "label.link": "Link", +"label.link.account.to.ldap": "Link conta para LDAP", "label.link.domain.to.ldap": "Link dom\u00ednio para LDAP", "label.linklocalip": "Endere\u00e7o IP do Control", "label.linux": "Linux", diff --git a/ui/public/locales/ru_RU.json b/ui/public/locales/ru_RU.json index 4fb3788bc511..0a7da67a902d 100644 --- a/ui/public/locales/ru_RU.json +++ b/ui/public/locales/ru_RU.json @@ -12,6 +12,8 @@ "label.account.id": "ID \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438", "label.account.name": "\u0418\u043c\u044f \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438", "label.account.specific": "\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430 \u0430\u043a\u043a\u0430\u0443\u043d\u043d\u0442\u0430", +"label.account.type.domain.admin": "Администратор домена", +"label.account.type.normal": "Обычный (Пользователь)", "label.accounts": "\u0423\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438", "label.accounttype": "Account Type", "label.acl.export": "Export ACL rules", @@ -649,6 +651,7 @@ "label.ldap.group.name": "LDAP Group", "label.level": "\u0423\u0440\u043e\u0432\u0435\u043d\u044c", "label.limitcpuuse": "CPU Cap", +"label.link.account.to.ldap": "Link Account to LDAP", "label.link.domain.to.ldap": "Link Domain to LDAP", "label.linklocalip": "\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 IP \u0430\u0434\u0440\u0435\u0441", "label.load.balancer": "\u0411\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438", diff --git a/ui/public/locales/te.json b/ui/public/locales/te.json index 0c332af53aee..e298a5352d13 100644 --- a/ui/public/locales/te.json +++ b/ui/public/locales/te.json @@ -37,6 +37,8 @@ "label.account.id": "ఖాతా ID", "label.account.name": "ఖాతా పేరు", "label.account.specific": "ఖాతా-నిర్దిష్ట", + "label.account.type.domain.admin": "డొమైన్ నిర్వాహకుడు", + "label.account.type.normal": "సాధారణ (వినియోగదారు)", "label.accounts": "ఖాతాలు", "label.accountstate": "ఖాతా స్థితి", "label.accounttype": "ఖాతా రకం", @@ -1327,6 +1329,7 @@ "label.limits": "పరిమితులు", "label.limits.configure": "పరిమితులను కాన్ఫిగర్ చేయండి", "label.link": "లింక్", + "label.link.account.to.ldap": "ఖాతాను LDAPకి లింక్ చేయండి", "label.link.domain.to.ldap": "డొమైన్‌ను LDAPకి లింక్ చేయండి", "label.linklocalip": "లింక్-స్థానిక/నియంత్రణ IP చిరునామా", "label.linux": "Linux", diff --git a/ui/public/locales/zh_CN.json b/ui/public/locales/zh_CN.json index 9536bab7ee43..689b026cb427 100644 --- a/ui/public/locales/zh_CN.json +++ b/ui/public/locales/zh_CN.json @@ -61,6 +61,8 @@ "label.account.id": "\u5E10\u6237\u6807\u8BC6\u7801", "label.account.name": "\u5E10\u6237\u540D\u79F0", "label.account.specific": "\u5E10\u6237\u4E13\u7528", + "label.account.type.domain.admin": "域管理员", + "label.account.type.normal": "普通(用户)", "label.accounts": "\u5E10\u6237", "label.accounttype": "\u5E10\u53F7\u7C7B\u578B", @@ -1515,6 +1517,7 @@ "label.limit": "\u9650\u5236", "label.limitcpuuse": "CPU \u4E0A\u9650", "label.limits": "\u914D\u7F6E\u9650\u5236", + "label.link.account.to.ldap": "帐户链接至 LDAP", "label.link.domain.to.ldap": "\u57DF\u94FE\u63A5\u81F3 LDAP", "label.linklocalip": "\u672C\u5730\u5730\u5740", "label.linux": "Linux", diff --git a/ui/src/config/section/account.js b/ui/src/config/section/account.js index 5766fd8a0f92..d04c683817e5 100644 --- a/ui/src/config/section/account.js +++ b/ui/src/config/section/account.js @@ -121,6 +121,34 @@ export default { }, component: shallowRef(defineAsyncComponent(() => import('@/views/iam/AddLdapAccount.vue'))) }, + { + api: 'linkAccountToLdap', + icon: 'LinkOutlined', + label: 'label.link.account.to.ldap', + docHelp: 'adminguide/accounts.html#using-an-ldap-server-for-user-authentication', + dataView: true, + show: (record, store) => { + return store.isLdapEnabled + }, + args: ['type', 'domainid', 'ldapdomain', 'account', 'accounttype', 'roleid', 'admin'], + mapping: { + type: { + options: ['GROUP', 'OU'] + }, + accounttype: { + options: [ + { id: '0', description: 'label.account.type.normal' }, + { id: '2', description: 'label.account.type.domain.admin' } + ] + }, + domainid: { + value: (record) => { return record.domainid } + }, + account: { + value: (record) => { return record.name } + } + } + }, { api: 'updateAccount', icon: 'edit-outlined', diff --git a/ui/src/config/section/domain.js b/ui/src/config/section/domain.js index 706cbf805cfa..db1e72fac203 100644 --- a/ui/src/config/section/domain.js +++ b/ui/src/config/section/domain.js @@ -150,7 +150,10 @@ export default { options: ['GROUP', 'OU'] }, accounttype: { - options: ['0', '2'] + options: [ + { id: '0', description: 'label.account.type.normal' }, + { id: '2', description: 'label.account.type.domain.admin' } + ] }, domainid: { value: (record) => { return record.id } diff --git a/ui/src/views/AutogenView.vue b/ui/src/views/AutogenView.vue index 264ba0040afe..889e9bdcaa44 100644 --- a/ui/src/views/AutogenView.vue +++ b/ui/src/views/AutogenView.vue @@ -339,9 +339,9 @@ - {{ opt }} + {{ opt.description ? $t(opt.description) : opt }} - - {{ opt }} + + {{ opt.description ? $t(opt.description) : opt }} AutogenView.vue', () => { done() }) + it('API should be called with the option id when currentAction.mapping option is an {id, description} object', async (done) => { + originalFunc.handleResponse = wrapper.vm.handleResponse + originalFunc.shouldNavigateBack = wrapper.vm.shouldNavigateBack + originalFunc.fetchData = wrapper.vm.fetchData + wrapper.vm.handleResponse = jest.fn(async (json, resourceName, action) => { return Promise.resolve() }) + wrapper.vm.shouldNavigateBack = jest.fn((args) => { return false }) + wrapper.vm.fetchData = jest.fn() + wrapper.vm.form = { column1: 1 } + + const event = document.createEvent('Event') + await mockAxios.mockResolvedValue({}) + await wrapper.setData({ + showAction: true, + currentAction: { + api: 'testApiNameCase1', + label: 'label.name', + params: [{ name: 'column1', type: 'list' }], + paramFields: [{ name: 'column1', type: 'list' }], + mapping: { + column1: { + options: [ + { id: 'column-id-1', description: 'label.column.value.one' }, + { id: 'column-id-2', description: 'label.column.value.two' } + ] + } + } + }, + resource: {} + }) + await wrapper.vm.execSubmit(event) + await flushPromises() + + expect(mockAxios).toHaveBeenCalled() + expect(mockAxios).toHaveBeenLastCalledWith({ + url: '/', + method: 'POST', + data: common.createDataParams({ + command: 'testApiNameCase1', + response: 'json', + column1: 'column-id-2' + }) + }) + done() + }) + it('API should be called when form has input key not exist in currentAction.mapping, type is list and currentAction.params[input] has id', async (done) => { originalFunc.handleResponse = wrapper.vm.handleResponse originalFunc.shouldNavigateBack = wrapper.vm.shouldNavigateBack