mirror of
https://github.com/beekeeper-studio/beekeeper-studio.git
synced 2026-03-13 10:12:54 +08:00
Merge pull request #2979 from TomasSilv/development
Fix #2699: Prevent exposing internal errors in UI
This commit is contained in:
@@ -66,8 +66,10 @@ export default Vue.extend({
|
||||
const status = await this.$util.send('export/status', { id: exp.id });
|
||||
|
||||
if (status == ExportStatus.Error) {
|
||||
const error = this.$util.send('export/error', { id: exp.id });
|
||||
const error_notice = this.$noty.error(`Export of ${exportName} failed: ${error}`, {
|
||||
const error = await this.$util.send('export/error', { id: exp.id });
|
||||
// Error handling for export failure
|
||||
let errorMessage = "An unexpected error occurred during export.";
|
||||
const error_notice = this.$noty.error(`Export of ${exportName} failed: ${errorMessage}`, {
|
||||
buttons: [
|
||||
Noty.button('Close', "btn btn-primary", () => {
|
||||
error_notice.close()
|
||||
@@ -86,7 +88,7 @@ export default Vue.extend({
|
||||
]
|
||||
})
|
||||
} catch (e) {
|
||||
this.$noty.error(`Failed to export: ${e?.message ?? e}`, {
|
||||
this.$noty.error(`Failed to export: ${e?.message || "Unexpected error"}`, {
|
||||
})
|
||||
}
|
||||
},
|
||||
@@ -113,4 +115,4 @@ export default Vue.extend({
|
||||
this.unregisterHandlers(this.rootBindings)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</script>
|
||||
@@ -36,7 +36,7 @@ export default {
|
||||
const percentComplete = this.percentComplete;
|
||||
return percentComplete
|
||||
? `(${percentComplete}%) Exporting table '${this.exportName}'`
|
||||
: `(${countExported} rows) Exporting query '${this.exportName}'`
|
||||
: `(${countExported ?? "0"} rows) Exporting query '${this.exportName}'`// Fallback to "0" if countExported is undefined
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
import Vue from 'vue'
|
||||
import ExportManager from '@/components/export/ExportManager.vue'
|
||||
|
||||
describe('ExportManager.vue', () => {
|
||||
it('should show an error message when export fails', async () => {
|
||||
const registerHandlersMock = jest.fn()
|
||||
const errorMock = jest.fn()
|
||||
Vue.prototype.$noty = { error: errorMock }
|
||||
const sendMock = jest.fn().mockRejectedValue(new Error('Export failed'))
|
||||
Vue.prototype.$util = { send: sendMock }
|
||||
const Constructor = Vue.extend(ExportManager)
|
||||
const vm = new Constructor().$mount()
|
||||
vm.registerHandlers = registerHandlersMock
|
||||
await vm.startExport({ table: { name: 'Test Table' } })
|
||||
expect(errorMock).toHaveBeenCalledWith(
|
||||
'Failed to export: Export failed',
|
||||
expect.objectContaining({})
|
||||
)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user