add credentials saving in VAL (#23561)

This commit is contained in:
Syed Muhammad Dawoud Sheraz Ali
2020-04-02 11:21:09 +05:00
committed by GitHub
parent 18c5333a68
commit cd6549748b
7 changed files with 88 additions and 7 deletions

View File

@@ -15,6 +15,11 @@ from contentstore.tests.utils import CourseTestCase
from contentstore.utils import reverse_course_url
from contentstore.views.transcript_settings import TranscriptionProviderErrorType, validate_transcript_credentials
from openedx.core.djangoapps.profile_images.tests.helpers import make_image_file
from openedx.core.djangoapps.video_pipeline.config.waffle import (
SAVE_CREDENTIALS_IN_VAL,
waffle_flags
)
from openedx.core.djangoapps.waffle_utils.testutils import override_waffle_flag
from student.roles import CourseStaffRole
@@ -108,6 +113,56 @@ class TranscriptCredentialsTest(CourseTestCase):
self.assertEqual(response.status_code, expected_status_code)
self.assertEqual(response.content.decode('utf-8'), expected_response)
@override_waffle_flag(waffle_flags()[SAVE_CREDENTIALS_IN_VAL], True)
@ddt.data(
(
{
'provider': '3PlayMedia',
'api_key': '11111',
'api_secret_key': '44444'
},
{'error_type': TranscriptionProviderErrorType.INVALID_CREDENTIALS},
400,
'{\n "error": "The information you entered is incorrect."\n}'
),
(
{
'provider': 'Cielo24',
'api_key': '12345',
'username': 'test_user'
},
{'error_type': None},
200,
''
),
(
{
'provider': '3PlayMedia',
'api_key': '12345',
'api_secret_key': '44444'
},
{'error_type': None},
200,
''
)
)
@ddt.unpack
@patch('edxval.api.create_or_update_transcript_credentials')
def test_val_transcript_credentials_handler(self, request_payload, update_credentials_response,
expected_status_code, expected_response, api_patch):
"""
Test that credentials handler works fine with VAL api endpoint.
"""
api_patch.return_value = update_credentials_response
transcript_credentials_url = self.get_url_for_course_key(self.course.id)
response = self.client.post(
transcript_credentials_url,
data=json.dumps(request_payload),
content_type='application/json'
)
self.assertEqual(response.status_code, expected_status_code)
self.assertEqual(response.content.decode('utf-8'), expected_response)
@ddt.ddt
class TranscriptCredentialsValidationTest(TestCase):

View File

@@ -23,6 +23,10 @@ from opaque_keys.edx.keys import CourseKey
from contentstore.views.videos import TranscriptProvider
from openedx.core.djangoapps.video_config.models import VideoTranscriptEnabledFlag
from openedx.core.djangoapps.video_pipeline.config.waffle import (
SAVE_CREDENTIALS_IN_VAL,
waffle_flags
)
from openedx.core.djangoapps.video_pipeline.api import update_3rd_party_transcription_service_credentials
from student.auth import has_studio_write_access
from util.json_request import JsonResponse, expect_json
@@ -110,7 +114,12 @@ def transcript_credentials_handler(request, course_key_string):
else:
# Send the validated credentials to edx-video-pipeline.
credentials_payload = dict(validated_credentials, org=course_key.org, provider=provider)
error_response, is_updated = update_3rd_party_transcription_service_credentials(**credentials_payload)
if waffle_flags()[SAVE_CREDENTIALS_IN_VAL].is_enabled(course_key):
from edxval.api import create_or_update_transcript_credentials
response = create_or_update_transcript_credentials(**credentials_payload)
error_response, is_updated = response, not response.get('error_type')
else:
error_response, is_updated = update_3rd_party_transcription_service_credentials(**credentials_payload)
# Send appropriate response based on whether credentials were updated or not.
if is_updated:
# Cache credentials state in edx-val.

View File

@@ -2085,6 +2085,17 @@ VIDEO_TRANSCRIPTS_SETTINGS = dict(
VIDEO_TRANSCRIPTS_MAX_AGE = 31536000
############################ TRANSCRIPT PROVIDERS SETTINGS ########################
# Note: These settings will also exist in video-encode-manager, so any update here
# should also be done there. Additionally, the BASE & LOGIN URL will be overridden at
# deployment as the actual URL is different from sandboxing URL.
CIELO24_SETTINGS = dict(
CIELO24_API_VERSION=1,
CIELO24_BASE_API_URL="https://sandbox.cielo24.com/api",
CIELO24_LOGIN_URL="https://sandbox.cielo24.com/api/account/login"
)
##### shoppingcart Payment #####
PAYMENT_SUPPORT_EMAIL = 'billing@example.com'

View File

@@ -11,6 +11,7 @@ WAFFLE_NAMESPACE = 'videos'
# Waffle flag telling whether youtube is deprecated.
DEPRECATE_YOUTUBE = 'deprecate_youtube'
ENABLE_DEVSTACK_VIDEO_UPLOADS = 'enable_devstack_video_uploads'
SAVE_CREDENTIALS_IN_VAL = 'save_credentials_in_val'
def waffle_flags():
@@ -27,5 +28,10 @@ def waffle_flags():
waffle_namespace=namespace,
flag_name=ENABLE_DEVSTACK_VIDEO_UPLOADS,
flag_undefined_default=False
),
SAVE_CREDENTIALS_IN_VAL: CourseWaffleFlag(
waffle_namespace=namespace,
flag_name=SAVE_CREDENTIALS_IN_VAL,
flag_undefined_default=False
)
}

View File

@@ -106,7 +106,7 @@ edx-enterprise==3.0.3 # via -r requirements/edx/base.in
edx-i18n-tools==0.5.0 # via ora2
edx-milestones==0.2.6 # via -r requirements/edx/base.in
edx-opaque-keys[django]==2.0.2 # via -r requirements/edx/paver.txt, edx-bulk-grades, edx-ccx-keys, edx-completion, edx-drf-extensions, edx-enterprise, edx-milestones, edx-organizations, edx-proctoring, edx-user-state-client, edx-when, xmodule
edx-organizations==4.0.0 # via -r requirements/edx/base.in
edx-organizations==5.0.0 # via -r requirements/edx/base.in
edx-proctoring-proctortrack==1.0.5 # via -r requirements/edx/base.in
edx-proctoring==2.3.3 # via -r requirements/edx/base.in, edx-proctoring-proctortrack
edx-rbac==1.1.2 # via edx-enterprise
@@ -117,7 +117,7 @@ edx-submissions==3.0.6 # via -r requirements/edx/base.in, ora2
edx-tincan-py35==0.0.5 # via edx-enterprise
edx-user-state-client==1.1.2 # via -r requirements/edx/base.in
edx-when==1.1.5 # via -r requirements/edx/base.in, edx-proctoring
edxval==1.2.6 # via -r requirements/edx/base.in
edxval==1.2.8 # via -r requirements/edx/base.in
elasticsearch==1.9.0 # via edx-search
enum34==1.1.10 # via edxval
event-tracking==0.3.0 # via -r requirements/edx/base.in, edx-proctoring, edx-search

View File

@@ -119,7 +119,7 @@ edx-i18n-tools==0.5.0 # via -r requirements/edx/testing.txt, ora2
edx-lint==1.4.1 # via -r requirements/edx/testing.txt
edx-milestones==0.2.6 # via -r requirements/edx/testing.txt
edx-opaque-keys[django]==2.0.2 # via -r requirements/edx/testing.txt, edx-bulk-grades, edx-ccx-keys, edx-completion, edx-drf-extensions, edx-enterprise, edx-milestones, edx-organizations, edx-proctoring, edx-user-state-client, edx-when, xmodule
edx-organizations==4.0.0 # via -r requirements/edx/testing.txt
edx-organizations==5.0.0 # via -r requirements/edx/testing.txt
edx-proctoring-proctortrack==1.0.5 # via -r requirements/edx/testing.txt
edx-proctoring==2.3.3 # via -r requirements/edx/testing.txt, edx-proctoring-proctortrack
edx-rbac==1.1.2 # via -r requirements/edx/testing.txt, edx-enterprise
@@ -131,7 +131,7 @@ edx-submissions==3.0.6 # via -r requirements/edx/testing.txt, ora2
edx-tincan-py35==0.0.5 # via -r requirements/edx/testing.txt, edx-enterprise
edx-user-state-client==1.1.2 # via -r requirements/edx/testing.txt
edx-when==1.1.5 # via -r requirements/edx/testing.txt, edx-proctoring
edxval==1.2.6 # via -r requirements/edx/testing.txt
edxval==1.2.8 # via -r requirements/edx/testing.txt
elasticsearch==1.9.0 # via -r requirements/edx/testing.txt, edx-search
entrypoints==0.3 # via -r requirements/edx/testing.txt, flake8
enum34==1.1.10 # via -r requirements/edx/testing.txt, edxval

View File

@@ -115,7 +115,7 @@ edx-i18n-tools==0.5.0 # via -r requirements/edx/base.txt, -r requirements/ed
edx-lint==1.4.1 # via -r requirements/edx/testing.in
edx-milestones==0.2.6 # via -r requirements/edx/base.txt
edx-opaque-keys[django]==2.0.2 # via -r requirements/edx/base.txt, edx-bulk-grades, edx-ccx-keys, edx-completion, edx-drf-extensions, edx-enterprise, edx-milestones, edx-organizations, edx-proctoring, edx-user-state-client, edx-when, xmodule
edx-organizations==4.0.0 # via -r requirements/edx/base.txt
edx-organizations==5.0.0 # via -r requirements/edx/base.txt
edx-proctoring-proctortrack==1.0.5 # via -r requirements/edx/base.txt
edx-proctoring==2.3.3 # via -r requirements/edx/base.txt, edx-proctoring-proctortrack
edx-rbac==1.1.2 # via -r requirements/edx/base.txt, edx-enterprise
@@ -126,7 +126,7 @@ edx-submissions==3.0.6 # via -r requirements/edx/base.txt, ora2
edx-tincan-py35==0.0.5 # via -r requirements/edx/base.txt, edx-enterprise
edx-user-state-client==1.1.2 # via -r requirements/edx/base.txt
edx-when==1.1.5 # via -r requirements/edx/base.txt, edx-proctoring
edxval==1.2.6 # via -r requirements/edx/base.txt
edxval==1.2.8 # via -r requirements/edx/base.txt
elasticsearch==1.9.0 # via -r requirements/edx/base.txt, edx-search
entrypoints==0.3 # via flake8
enum34==1.1.10 # via -r requirements/edx/base.txt, edxval