Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
6f064e2b
Commit
6f064e2b
authored
Apr 23, 2014
by
Muhammad Ammar
Committed by
Muhammmad Ammar
Apr 25, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Configure youtube stub for bok-choy
parent
83853098
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
58 additions
and
13 deletions
+58
-13
cms/djangoapps/contentstore/features/video.py
+0
-2
cms/envs/bok_choy.py
+6
-0
common/djangoapps/terrain/start_stubs.py
+0
-5
common/djangoapps/terrain/stubs/tests/test_youtube_stub.py
+14
-0
common/djangoapps/terrain/stubs/youtube.py
+24
-2
common/test/acceptance/pages/lms/video.py
+0
-1
lms/djangoapps/courseware/features/video.py
+0
-2
lms/envs/acceptance.py
+1
-1
lms/envs/bok_choy.py
+7
-0
rakelib/bok_choy.rake
+6
-0
No files found.
cms/djangoapps/contentstore/features/video.py
View file @
6f064e2b
...
...
@@ -37,8 +37,6 @@ def configure_youtube_api(_step, action):
@step
(
'I have created a Video component$'
)
def
i_created_a_video_component
(
_step
):
assert_less
(
world
.
youtube
.
config
[
'youtube_api_response'
]
.
status_code
,
400
,
"Real Youtube server is unavailable"
)
world
.
create_course_with_unit
()
world
.
create_component_instance
(
step
=
_step
,
...
...
cms/envs/bok_choy.py
View file @
6f064e2b
...
...
@@ -49,3 +49,9 @@ FEATURES['AUTOMATIC_AUTH_FOR_TESTING'] = True
# Unfortunately, we need to use debug mode to serve staticfiles
DEBUG
=
True
# Point the URL used to test YouTube availability to our stub YouTube server
YOUTUBE_PORT
=
9080
YOUTUBE
[
'API'
]
=
"127.0.0.1:{0}/get_youtube_api/"
.
format
(
YOUTUBE_PORT
)
YOUTUBE
[
'TEST_URL'
]
=
"127.0.0.1:{0}/test_youtube/"
.
format
(
YOUTUBE_PORT
)
YOUTUBE
[
'TEXT_API'
][
'url'
]
=
"127.0.0.1:{0}/test_transcripts_youtube/"
.
format
(
YOUTUBE_PORT
)
common/djangoapps/terrain/start_stubs.py
View file @
6f064e2b
"""
Initialize and teardown stub and video HTTP services for use in acceptance tests.
"""
import
requests
from
lettuce
import
before
,
after
,
world
from
django.conf
import
settings
from
terrain.stubs.youtube
import
StubYouTubeService
...
...
@@ -16,8 +15,6 @@ SERVICES = {
"lti"
:
{
"port"
:
settings
.
LTI_PORT
,
"class"
:
StubLtiService
},
}
YOUTUBE_API_RESPONSE
=
requests
.
get
(
'http://www.youtube.com/iframe_api'
)
@before.all
# pylint: disable=E1101
def
start_video_server
():
...
...
@@ -49,8 +46,6 @@ def start_stubs(_scenario):
"""
for
name
,
service
in
SERVICES
.
iteritems
():
fake_server
=
service
[
'class'
](
port_num
=
service
[
'port'
])
if
name
==
'youtube'
:
fake_server
.
config
[
'youtube_api_response'
]
=
YOUTUBE_API_RESPONSE
setattr
(
world
,
name
,
fake_server
)
...
...
common/djangoapps/terrain/stubs/tests/test_youtube_stub.py
View file @
6f064e2b
...
...
@@ -60,3 +60,17 @@ class StubYouTubeServiceTest(unittest.TestCase):
def
test_transcript_not_found
(
self
):
response
=
requests
.
get
(
self
.
url
+
'test_transcripts_youtube/some_id'
)
self
.
assertEqual
(
404
,
response
.
status_code
)
def
test_reset_configuration
(
self
):
reset_config_url
=
self
.
url
+
'del_config'
# add some configuration data
self
.
server
.
config
[
'test_reset'
]
=
'This is a reset config test'
# reset server configuration
response
=
requests
.
delete
(
reset_config_url
)
self
.
assertEqual
(
response
.
status_code
,
200
)
# ensure that server config dict is empty after successful reset
self
.
assertEqual
(
self
.
server
.
config
,
{})
common/djangoapps/terrain/stubs/youtube.py
View file @
6f064e2b
...
...
@@ -17,6 +17,7 @@ To start this stub server on its own from Vagrant:
you get "Unused url" message inside the browser.
"""
import
textwrap
from
.http
import
StubHttpRequestHandler
,
StubHttpService
import
json
import
time
...
...
@@ -25,6 +26,17 @@ from urlparse import urlparse
from
collections
import
OrderedDict
IFRAME_API_RESPONSE
=
textwrap
.
dedent
(
"if (!window['YT']) {var YT = {loading: 0,loaded: 0};}if (!window['YTConfig']) {var YTConfig"
" = {};}if (!YT.loading) {YT.loading = 1;(function(){var l = [];YT.ready = function(f) {if ("
"YT.loaded) {f();} else {l.push(f);}};window.onYTReady = function() {YT.loaded = 1;for (var "
"i = 0; i < l.length; i++) {try {l[i]();} catch (e) {}}};YT.setConfig = function(c) {for (var"
" k in c) {if (c.hasOwnProperty(k)) {YTConfig[k] = c[k];}}};var a = document.createElement"
"('script');a.id = 'www-widgetapi-script';a.src = 'http:' + '"
"//s.ytimg.com/yts/jsbin/www-widgetapi-vflxHr_AR.js';a.async = true;var b = "
"document.getElementsByTagName('script')[0];b.parentNode.insertBefore(a, b);})();}"
)
class
StubYouTubeHandler
(
StubHttpRequestHandler
):
"""
A handler for Youtube GET requests.
...
...
@@ -33,6 +45,17 @@ class StubYouTubeHandler(StubHttpRequestHandler):
# Default number of seconds to delay the response to simulate network latency.
DEFAULT_DELAY_SEC
=
0.5
def
do_DELETE
(
self
):
# pylint: disable=C0103
"""
Allow callers to delete all the server configurations using the /del_config URL.
"""
if
self
.
path
==
"/del_config"
or
self
.
path
==
"/del_config/"
:
self
.
server
.
config
=
dict
()
self
.
log_message
(
"Reset Server Configuration."
)
self
.
send_response
(
200
)
else
:
self
.
send_response
(
404
)
def
do_GET
(
self
):
"""
Handle a GET request from the client and sends response back.
...
...
@@ -80,8 +103,7 @@ class StubYouTubeHandler(StubHttpRequestHandler):
if
self
.
server
.
config
.
get
(
'youtube_api_blocked'
):
self
.
send_response
(
404
,
content
=
''
,
headers
=
{
'Content-type'
:
'text/plain'
})
else
:
response
=
self
.
server
.
config
[
'youtube_api_response'
]
self
.
send_response
(
200
,
content
=
response
.
text
,
headers
=
{
'Content-type'
:
'text/html'
})
self
.
send_response
(
200
,
content
=
IFRAME_API_RESPONSE
,
headers
=
{
'Content-type'
:
'text/html'
})
else
:
self
.
send_response
(
...
...
common/test/acceptance/pages/lms/video.py
View file @
6f064e2b
...
...
@@ -47,7 +47,6 @@ VIDEO_MENUS = {
}
@js_defined
(
'window.Video'
,
'window.RequireJS.require'
,
'window.jQuery'
)
class
VideoPage
(
PageObject
):
"""
...
...
lms/djangoapps/courseware/features/video.py
View file @
6f064e2b
...
...
@@ -178,8 +178,6 @@ def add_videos_to_course(course, player_mode=None, display_names=None, hashes=No
def
add_video_to_course
(
course
,
parent_location
=
None
,
player_mode
=
None
,
data
=
None
,
display_name
=
'Video'
):
assert_less
(
world
.
youtube
.
config
[
'youtube_api_response'
]
.
status_code
,
400
,
"Real Youtube server is unavailable"
)
if
not
parent_location
:
parent_location
=
add_vertical_to_course
(
course
)
kwargs
=
get_metadata
(
parent_location
,
player_mode
,
data
,
display_name
=
display_name
)
...
...
lms/envs/acceptance.py
View file @
6f064e2b
...
...
@@ -182,6 +182,6 @@ XQUEUE_INTERFACE = {
}
# Point the URL used to test YouTube availability to our stub YouTube server
YOUTUBE
[
'API'
]
=
'youtube.com/iframe_api'
YOUTUBE
[
'API'
]
=
"127.0.0.1:{0}/get_youtube_api/"
.
format
(
YOUTUBE_PORT
)
YOUTUBE
[
'TEST_URL'
]
=
"127.0.0.1:{0}/test_youtube/"
.
format
(
YOUTUBE_PORT
)
YOUTUBE
[
'TEXT_API'
][
'url'
]
=
"127.0.0.1:{0}/test_transcripts_youtube/"
.
format
(
YOUTUBE_PORT
)
lms/envs/bok_choy.py
View file @
6f064e2b
...
...
@@ -5,6 +5,7 @@ Settings for bok choy tests
import
os
from
path
import
path
CONFIG_ROOT
=
path
(
__file__
)
.
abspath
()
.
dirname
()
# pylint: disable=E1120
TEST_ROOT
=
CONFIG_ROOT
.
dirname
()
.
dirname
()
/
"test_root"
...
...
@@ -60,3 +61,9 @@ for log_name, log_level in LOG_OVERRIDES:
# Unfortunately, we need to use debug mode to serve staticfiles
DEBUG
=
True
# Point the URL used to test YouTube availability to our stub YouTube server
YOUTUBE_PORT
=
9080
YOUTUBE
[
'API'
]
=
"127.0.0.1:{0}/get_youtube_api/"
.
format
(
YOUTUBE_PORT
)
YOUTUBE
[
'TEST_URL'
]
=
"127.0.0.1:{0}/test_youtube/"
.
format
(
YOUTUBE_PORT
)
YOUTUBE
[
'TEXT_API'
][
'url'
]
=
"127.0.0.1:{0}/test_transcripts_youtube/"
.
format
(
YOUTUBE_PORT
)
rakelib/bok_choy.rake
View file @
6f064e2b
...
...
@@ -54,7 +54,13 @@ BOK_CHOY_STUBS = {
:port
=>
8777
,
:log
=>
File
.
join
(
BOK_CHOY_LOG_DIR
,
"bok_choy_video_sources.log"
),
:config
=>
"root_dir=
#{
VIDEO_SOURCE_DIR
}
"
},
:youtube
=>
{
:port
=>
9080
,
:log
=>
File
.
join
(
BOK_CHOY_LOG_DIR
,
"bok_choy_youtube.log"
)
}
}
# For the time being, stubs are used by both the bok-choy and lettuce acceptance tests
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment