-
Notifications
You must be signed in to change notification settings - Fork 196
feat: remove "Create Zendesk Tickets for suspicious attempts" setting from Proctored Exam Settings #2517
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
kdmccormick
merged 29 commits into
openedx:master
from
santhosh-apphelix-2u:COSMO2-110-zendesk-removal
Dec 11, 2025
Merged
feat: remove "Create Zendesk Tickets for suspicious attempts" setting from Proctored Exam Settings #2517
Changes from 23 commits
Commits
Show all changes
29 commits
Select commit
Hold shift + click to select a range
be94bcd
chore: Refactor proctoring provider handling in Settings
santhosh-apphelix-2u 6f8a9e6
Merge branch 'openedx:master' into master
santhosh-apphelix-2u da94636
chore: Skip Zendesk ticket tests for deprecated provider
santhosh-apphelix-2u fd78dd6
chore: Skip proctortrack related tests in Settings.test.jsx
santhosh-apphelix-2u 19a279e
chore: Skip tests for Proctortrack deprecation
santhosh-apphelix-2u e1f198c
chore: Skip alert test for invalid proctoring escalation email
santhosh-apphelix-2u be50450
chore: Update test to select escalation email by display value
santhosh-apphelix-2u 9942e16
chore: Remove deprecated Proctortrack tests from Settings.test.jsx
santhosh-apphelix-2u e828d95
Merge branch 'openedx:master' into master
santhosh-apphelix-2u 60af877
feat: remove Create Zendesk Tickets for suspicious attempts setting f…
santhosh-apphelix-2u a7c60e0
feat: Remove create_zendesk_tickets from test settings
santhosh-apphelix-2u c834e8d
chore: Update proctoring provider logic in Settings.jsx
santhosh-apphelix-2u d656b94
chore: Update proctoring escalation email tests
santhosh-apphelix-2u 5cd57dd
chore: Fix indentation in proctoring settings test
santhosh-apphelix-2u fa576c8
chore: Refactor proctoring provider handling in Settings
santhosh-apphelix-2u 9ecc0ef
chore: Fix test case description formatting for proctoring
santhosh-apphelix-2u 2a65c96
chore: Remove unnecessary whitespace in Settings.test.jsx
santhosh-apphelix-2u 1af31bb
chore: Remove create_zendesk_tickets from settings test
santhosh-apphelix-2u 31e9e7c
chore: Update proctoring settings handling
santhosh-apphelix-2u d9e6a4a
Merge branch 'openedx:master' into COSMO2-110-zendesk-removal
santhosh-apphelix-2u 92b9807
chore: Enable test for escalation email field visibility
santhosh-apphelix-2u a1ea9dc
chore: Remove unnecessary blank line in Settings.test.jsx
santhosh-apphelix-2u af03a5f
feat: Remove createZendeskTickets from settings
santhosh-apphelix-2u e1022f0
Merge branch 'master' into COSMO2-110-zendesk-removal
santhosh-apphelix-2u e70fe29
chore: Simplify proctoring provider selection logic
santhosh-apphelix-2u 39b46a9
chore: Refactor proctoring provider handling logic
santhosh-apphelix-2u b4e165e
chore: Fix formatting of proctoring escalation email in tests
santhosh-apphelix-2u 8e71b5a
chore: cleanup as per the PR
santhosh-apphelix-2u 051b9ca
chore: cleanup as per the PR
santhosh-apphelix-2u File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -105,36 +105,6 @@ describe('ProctoredExamSettings', () => { | |
| await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />))); | ||
| }); | ||
|
|
||
| it('Updates Zendesk ticket field if proctortrack is provider', async () => { | ||
| await waitFor(() => { | ||
| screen.getByDisplayValue('mockproc'); | ||
| }); | ||
| const selectElement = screen.getByDisplayValue('mockproc'); | ||
| fireEvent.change(selectElement, { target: { value: 'proctortrack' } }); | ||
| const zendeskTicketInput = screen.getByTestId('createZendeskTicketsNo'); | ||
| expect(zendeskTicketInput.checked).toEqual(true); | ||
| }); | ||
|
|
||
| it('Updates Zendesk ticket field if software_secure is provider', async () => { | ||
| await waitFor(() => { | ||
| screen.getByDisplayValue('mockproc'); | ||
| }); | ||
| const selectElement = screen.getByDisplayValue('mockproc'); | ||
| fireEvent.change(selectElement, { target: { value: 'software_secure' } }); | ||
| const zendeskTicketInput = screen.getByTestId('createZendeskTicketsYes'); | ||
| expect(zendeskTicketInput.checked).toEqual(true); | ||
| }); | ||
|
|
||
| it('Does not update zendesk ticket field for any other provider', async () => { | ||
| await waitFor(() => { | ||
| screen.getByDisplayValue('mockproc'); | ||
| }); | ||
| const selectElement = screen.getByDisplayValue('mockproc'); | ||
| fireEvent.change(selectElement, { target: { value: 'mockproc' } }); | ||
| const zendeskTicketInput = screen.getByTestId('createZendeskTicketsYes'); | ||
| expect(zendeskTicketInput.checked).toEqual(true); | ||
| }); | ||
|
|
||
| it('Hides all other fields when enabledProctorExam is false when first loaded', async () => { | ||
| cleanup(); | ||
| // Overrides the handler defined in beforeEach. | ||
|
|
@@ -161,8 +131,6 @@ describe('ProctoredExamSettings', () => { | |
| expect(screen.queryByText('Allow Opting Out of Proctored Exams')).toBeNull(); | ||
| expect(screen.queryByDisplayValue('mockproc')).toBeNull(); | ||
| expect(screen.queryByTestId('escalationEmail')).toBeNull(); | ||
| expect(screen.queryByTestId('createZendeskTicketsYes')).toBeNull(); | ||
| expect(screen.queryByTestId('createZendeskTicketsNo')).toBeNull(); | ||
| }); | ||
|
|
||
| it('Hides all other fields when enableProctoredExams toggled to false', async () => { | ||
|
|
@@ -172,8 +140,6 @@ describe('ProctoredExamSettings', () => { | |
| expect(screen.queryByText('Allow opting out of proctored exams')).toBeDefined(); | ||
| expect(screen.queryByDisplayValue('mockproc')).toBeDefined(); | ||
| expect(screen.queryByTestId('escalationEmail')).toBeDefined(); | ||
| expect(screen.queryByTestId('createZendeskTicketsYes')).toBeDefined(); | ||
| expect(screen.queryByTestId('createZendeskTicketsNo')).toBeDefined(); | ||
|
|
||
| let enabledProctoredExamCheck = screen.getAllByLabelText('Proctored exams', { exact: false })[0]; | ||
| expect(enabledProctoredExamCheck.checked).toEqual(true); | ||
|
|
@@ -183,8 +149,6 @@ describe('ProctoredExamSettings', () => { | |
| expect(screen.queryByText('Allow opting out of proctored exams')).toBeNull(); | ||
| expect(screen.queryByDisplayValue('mockproc')).toBeNull(); | ||
| expect(screen.queryByTestId('escalationEmail')).toBeNull(); | ||
| expect(screen.queryByTestId('createZendeskTicketsYes')).toBeNull(); | ||
| expect(screen.queryByTestId('createZendeskTicketsNo')).toBeNull(); | ||
| }); | ||
|
|
||
| it('Hides unsupported fields when lti provider is selected', async () => { | ||
|
|
@@ -527,18 +491,16 @@ describe('ProctoredExamSettings', () => { | |
| }); | ||
|
|
||
| describe('Toggles field visibility based on user permissions', () => { | ||
| it('Hides opting out and zendesk tickets for non edX staff', async () => { | ||
| it('Hides opting out for non edX staff', async () => { | ||
| setupApp(false); | ||
| await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />))); | ||
| expect(screen.queryByTestId('allowOptingOutYes')).toBeNull(); | ||
| expect(screen.queryByTestId('createZendeskTicketsYes')).toBeNull(); | ||
| }); | ||
|
|
||
| it('Shows opting out and zendesk tickets for edX staff', async () => { | ||
| it('Shows opting out for edX staff', async () => { | ||
| setupApp(true); | ||
| await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />))); | ||
| expect(screen.queryByTestId('allowOptingOutYes')).not.toBeNull(); | ||
| expect(screen.queryByTestId('createZendeskTicketsYes')).not.toBeNull(); | ||
| }); | ||
| }); | ||
|
|
||
|
|
@@ -624,7 +586,6 @@ describe('ProctoredExamSettings', () => { | |
| allow_proctoring_opt_out: false, | ||
| proctoring_provider: 'proctortrack', | ||
| proctoring_escalation_email: '[email protected]', | ||
| create_zendesk_tickets: false, | ||
| }, | ||
| }); | ||
|
|
||
|
|
@@ -651,7 +612,6 @@ describe('ProctoredExamSettings', () => { | |
| enable_proctored_exams: true, | ||
| allow_proctoring_opt_out: false, | ||
| proctoring_provider: 'mockproc', | ||
| create_zendesk_tickets: true, | ||
| }, | ||
| }); | ||
|
|
||
|
|
@@ -692,7 +652,6 @@ describe('ProctoredExamSettings', () => { | |
| enable_proctored_exams: true, | ||
| allow_proctoring_opt_out: false, | ||
| proctoring_provider: 'lti_external', | ||
| create_zendesk_tickets: true, | ||
| }, | ||
| }); | ||
|
|
||
|
|
@@ -722,7 +681,6 @@ describe('ProctoredExamSettings', () => { | |
| enable_proctored_exams: true, | ||
| allow_proctoring_opt_out: false, | ||
| proctoring_provider: 'mockproc', | ||
| create_zendesk_tickets: true, | ||
| }, | ||
| }); | ||
|
|
||
|
|
@@ -744,7 +702,6 @@ describe('ProctoredExamSettings', () => { | |
| allow_proctoring_opt_out: false, | ||
| proctoring_provider: 'mockproc', | ||
| proctoring_escalation_email: '[email protected]', | ||
| create_zendesk_tickets: true, | ||
| }, | ||
| available_proctoring_providers: ['software_secure', 'proctortrack', 'mockproc'], | ||
| course_start_date: '2070-01-01T00:00:00Z', | ||
|
|
@@ -762,7 +719,6 @@ describe('ProctoredExamSettings', () => { | |
| enable_proctored_exams: true, | ||
| allow_proctoring_opt_out: false, | ||
| proctoring_provider: 'mockproc', | ||
| create_zendesk_tickets: true, | ||
| }, | ||
| }); | ||
|
|
||
|
|
@@ -862,27 +818,5 @@ describe('ProctoredExamSettings', () => { | |
| expect(document.activeElement).toEqual(successAlert); | ||
| }); | ||
| }); | ||
|
|
||
| it('Include Zendesk ticket in post request if user is not an admin', async () => { | ||
| // use non-admin user for test | ||
| const isAdmin = false; | ||
| setupApp(isAdmin); | ||
|
|
||
| await act(async () => render(intlWrapper(<IntlProctoredExamSettings {...defaultProps} />))); | ||
| // Make a change to the proctoring provider | ||
| const selectElement = screen.getByDisplayValue('mockproc'); | ||
| fireEvent.change(selectElement, { target: { value: 'proctortrack' } }); | ||
| const submitButton = screen.getByTestId('submissionButton'); | ||
| fireEvent.click(submitButton); | ||
| expect(axiosMock.history.post.length).toBe(1); | ||
| expect(JSON.parse(axiosMock.history.post[0].data)).toEqual({ | ||
| proctored_exam_settings: { | ||
| enable_proctored_exams: true, | ||
| proctoring_provider: 'proctortrack', | ||
| proctoring_escalation_email: '[email protected]', | ||
| create_zendesk_tickets: false, | ||
| }, | ||
| }); | ||
| }); | ||
| }); | ||
| }); | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.