/** * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * @fileoverview Activity tests for MakaMaka. * * Activities Fetching - not supporting containers - ACT000 * Activities Fetching - supporting containers - ACT600 * Activities Fetching - Error Handling - ACT400 * Activities Creation - Basic - ACT100 * Activities Creation - Fields - ACT200 * Activities Creation - Media Items - ACT300 * Activities Creation - Error Handling - ACT500 * Activities Creation - Fetch Create - ACT600 */ function ActivitySuite0_8() { this.name = 'Activity Test Suite'; this.id = 'ACT'; this.tests = [ /** * Activities Fetching */ { name: 'opensocial.DataRequest.newFetchActivitiesRequest(VIEWER)', id: 'ACT000', priority: Test.PRIORITY.P2, description: 'Tries to fetch activities for a VIEWER, and ' + 'tests that the dataResponse is not null', run: function(context, callback, result) { ActivitySuite0_8.testNewFetchActivityRequestFor(Config.VIEWER, callback, result, context, Assert.assertTrue, Config.VIEWER); } }, { name: 'opensocial.DataRequest.newFetchActivitiesRequest(VIEWER_FRIENDS)', id: 'ACT001', priority: Test.PRIORITY.P2, description: 'Tries to fetch activities for a ' + 'VIEWER_FRIENDS, and tests that the dataResponse is not ' + 'null', run: function(context, callback, result) { ActivitySuite0_8.testNewFetchActivityRequestFor(opensocial.newIdSpec( {userId : 'VIEWER', groupId : 'FRIENDS', networkDistance : 1}), callback, result, context, Assert.assertTrue, Config.VIEWER); } }, { name: 'opensocial.DataRequest.newFetchActivitiesRequest(OWNER)', id: 'ACT002', priority: Test.PRIORITY.P2, description: 'Tries to fetch activities for a OWNER, and ' + 'tests that the dataResponse is not null', run: function(context, callback, result) { ActivitySuite0_8.testNewFetchActivityRequestFor(Config.OWNER, callback, result, context, Assert.assertTrue, Config.OWNER); } }, { name: 'opensocial.DataRequest.newFetchActivitiesRequest(OWNER_FRIENDS)', id: 'ACT003', priority: Test.PRIORITY.P2, description: 'Tries to fetch activities for a OWNER_FRIENDS,' + ' and tests that the dataResponse is not null', run: function(context, callback, result) { ActivitySuite0_8.testNewFetchActivityRequestFor(opensocial.newIdSpec( {userId : 'OWNER', groupId : 'FRIENDS', networkDistance : 1}), callback, result, context, Assert.assertTrue, Config.OWNER); } }, { name: 'opensocial.DataRequest.newFetchActivitiesRequest(INVALID_ID) ' + 'using an invalid ID', id: 'ACT004', priority: Test.PRIORITY.P2, description: 'Tries to fetch activities for a INVALID_ID,' + ' and tests that the dataResponse is not null', run: function(context, callback, result) { var invalidId = new Date().getTime(); ActivitySuite0_8.testNewFetchActivityRequestFor( opensocial.newIdSpec({userId: invalidId}), callback, result, context, Assert.assertFalse); } }, { name: 'opensocial.DataRequest.newFetchActivitiesRequest(ID) using ' + "a known owner's friend", id: 'ACT005', priority: Test.PRIORITY.P2, description: 'Tries to fetch activities for a OWNERS_FRIENDS if' + ' container supports fetching activities.', run: function(context, callback, result) { var thisTest = this; var req = opensocial.newDataRequest(); req.add(req.newFetchPeopleRequest(opensocial.newIdSpec( {userId : 'OWNER', groupId : 'FRIENDS', networkDistance : 1})), 'owner_friends'); req.send(function(dataResponse){ result.addSubResult('Data response not null', Assert.assertNotNull(dataResponse), dataResponse, 'not null'); if (Assert.assertDataResponseShouldContinue(dataResponse, result, context, null, Result.severity.WARNING, Config.OWNER)) { var ownerFriends = dataResponse.get('owner_friends'); if (ownerFriends && ownerFriends.getData()) { var friends = ownerFriends.getData(); Helper.logIntoResult( result, 'OWNER_FRIENDS.size()', friends.size(), 'should have at least 1 friend for fetching activities'); var friend = (friends && (friends.size() > 0)) ? friends.asArray()[0] : undefined; if (friend) { ActivitySuite0_8.testNewFetchActivityRequestFor( opensocial.newIdSpec({userId : friend.getId()}), callback, result, context, false); } } else { result.addSubResult('owner_friends has no data', Assert.fail, 'no data', 'Some value'); } } callback(result); }); } }, /** * Activities Creation - Basic */ { name: 'opensocial.requestCreateActivity using title', id: 'ACT100', priority: Test.PRIORITY.P1, description: 'Create activity using title, verify if fetching is' + ' supported.', run: function(context, callback, result) { var today = new Date(); var activityStamp = today.getTime(); var title = '[' + this.id + ']: usingTitle ' + today + ' ' + activityStamp; var activity = opensocial.newActivity({'title' : title}); opensocial.requestCreateActivity(activity, opensocial.CreateActivityPriority.HIGH, function(responseItem) { if (Assert.assertDataResponseShouldContinue(responseItem, result, context, null, Result.severity.WARNING, Config.OWNER)) { // Check activity creation Helper.addSubResult(result, 'dataResponse.hadError()' , Assert.assertFalse, responseItem.hadError()); ActivitySuite0_8.testFetchActivity(result, context, opensocial.Activity.Field.TITLE, activityStamp, function(activityFetched, result) { if (activityFetched) { Helper.addInfoSubResult(result, 'activityFetched', Assert.assertDefined, gadgets.json.stringify(activityFetched), 'Defined'); var actualTitle = activityFetched.getField( opensocial.Activity.Field.TITLE); Helper.addSubResult(result, 'Title', Assert.assertEquals, actualTitle, title); } callback(result); }); } else { if (!opensocial.getEnvironment().supportsField( opensocial.Environment.ObjectType.ACTIVITY, 'title')) { Helper.addSubResult(result, 'Doesn\'t support title - ' + 'responseItem.hadError()', Assert.assertTrue, responseItem.hadError(), 'true'); } callback(result); } }); } }, { name: 'opensocial.requestCreateActivity using titleId', id: 'ACT101', priority: Test.PRIORITY.P1, description: 'Tests if you can create activity using title-id without ' + 'title.', run: function(context, callback, result) { var today = new Date(); var activityStamp = today.getTime(); var titleId = '[' + this.id + ']: usingTitleId ' + today + ' ' + activityStamp; var activity = opensocial.newActivity({'titleId' : titleId}); opensocial.requestCreateActivity(activity, opensocial.CreateActivityPriority.HIGH, function(responseItem) { if(Assert.assertDataResponseShouldContinue(responseItem, result, context, null, Result.severity.WARNING, Config.OWNER)) { //Check activity creation result.addSubResult('Response item is not null', Assert.assertNotNull(responseItem), responseItem, 'responseItem not null'); Helper.addSubResult(result, 'dataResponse.hadError()' , Assert.assertFalse, responseItem.hadError()); ActivitySuite0_8.testFetchActivity(result, context, opensocial.Activity.Field.TITLE_ID, activityStamp, function(activityFetched, result) { if (activityFetched) { Helper.addInfoSubResult(result, 'activityFetched', Assert.assertDefined, gadgets.json.stringify(activityFetched), 'Defined'); var actualTitleId = activityFetched.getField( opensocial.Activity.Field.TITLE_ID); Helper.addSubResult(result, 'Title Id', Assert.assertEquals, actualTitleId, titleId); } callback(result); }); } else { if (!opensocial.getEnvironment().supportsField( opensocial.Environment.ObjectType.ACTIVITY, 'titleId')) { Helper.addSubResult(result, 'Doesn\'t support titleId - ' + 'responseItem.hadError()', Assert.assertTrue, responseItem.hadError(), 'true'); } callback(result); } }); } }, { name: 'opensocial.requestCreateActivity using Template and Template ' + 'Params', id: 'ACT102', priority: Test.PRIORITY.P1, description: 'Tests if it\'s possible to create activity using template' + 'and template params. It tries to verify if fetching ' + 'activities is supported.', run: function(context, callback, result) { var today = new Date(); var activityStamp = today.getTime(); var owner = context.getOwner(); var viewer = context.getViewer(); var templateParams = {}; templateParams['Song'] = 'With or without you'; templateParams['Artist'] = 'U2'; templateParams['Viewer'] = viewer; templateParams['Owner'] = owner; var title = '[' + this.id + ']: templateParams ' + today + ' ' + activityStamp; var titleId = '[' + this.id + ']: templateParams titleId ' + today + ' ' + activityStamp; var params = {}; params[opensocial.Activity.Field.TITLE] = title; params[opensocial.Activity.Field.TITLE_ID] = titleId; params[opensocial.Activity.Field.TEMPLATE_PARAMS] = templateParams; var activity = opensocial.newActivity(params); ActivitySuite0_8.testRequestCreateActivity(result, activity, function(result, responseItem) { if(Assert.assertDataResponseShouldContinue(responseItem, result, context, null, Result.severity.WARNING, Config.OWNER)) { ActivitySuite0_8.testFetchActivity(result, context, opensocial.Activity.Field.TITLE, activityStamp, function(activityFetched, result) { if (activityFetched) { var _templateParams = activityFetched.getField( opensocial.Activity.Field.TEMPLATE_PARAMS); if (opensocial.getEnvironment().supportsField( opensocial.Environment.ObjectType.ACTIVITY , opensocial.Activity.Field.TEMPLATE_PARAMS)) { Helper.addSubResult(result, 'Activity Template Object' , Assert.assertObjectEquals('ActivityTemplate', _templateParams, null, templateParams, result), _templateParams, templateParams); Helper.addSubResult(result, 'Activity Template Fields', Assert.assertObjectEquals('ActivityTemplate', _templateParams, ['Song', 'Artist', 'Viewer' , 'Owner'], templateParams, result), _templateParams, templateParams); Helper.addSubResult(result, 'Template Song', Assert.assertEquals, _templateParams['Song'], templateParams['Song']); Helper.addSubResult(result, 'Template Artist', Assert.assertEquals, _templateParams['Artist'], _templateParams['Artist']); Helper.addSubResult(result, 'Template Viewer', Assert.assertEquals, _templateParams['Viewer'], _templateParams['Viewer']); Helper.addSubResult(result, 'Template Owner', Assert.assertEquals, _templateParams['Owner'], _templateParams['Owner']); Helper.addSubResult(result, 'Activity Title', Assert.assertEquals, actualTitle , params[opensocial.Activity.Field.TITLE]); } else { Helper.logIntoResult(result, 'templateParams is NOT supported'); } if (opensocial.getEnvironment().supportsField( opensocial.Environment.ObjectType.ACTIVITY, 'title')) { var actualTitle = activityFetched.getField( opensocial.Activity.Field.TITLE); Helper.addSubResult(result, 'Activity Title', Assert.assertEquals, actualTitle , params[opensocial.Activity.Field.TITLE]); } } callback(result); }); } else { Assert.assertDataResponseHadError( responseItem, result, null, true, Result.severity.INFO); callback(result); } }, this, context); } }, { name: 'opensocial.requestCreateActivity using Template', id: 'ACT103', tags: ['notImplementedYet'], priority: Test.PRIORITY.P1, description: 'Tests if it\'s possible to create activity using template' + '. It tries to verify if fetching activities is supported.', run: function(context, callback, result) { var today = new Date(); var activityStamp = today.getTime(); var owner = context.getOwner(); var viewer = context.getViewer(); var title = '[' + this.id + ']: Using Template ' + today + ' ' + activityStamp; var titleId = '[' + this.id + ']: titleId ' + today + ' ' + activityStamp; var params = {}; params[opensocial.Activity.Field.TITLE] = title; params[opensocial.Activity.Field.TITLE_ID] = titleId; var activity = opensocial.newActivity(params); activity.setField('LISTEN_TO_THIS_SONG', {Song: 'Do That There - (Young Einstein hoo-hoo mix)', Artist: 'Lyrics Born', Subject: viewer, Owner: owner}); ActivitySuite0_8.testRequestCreateActivity(result, activity, function(result, responseItem){ if(Assert.assertDataResponseShouldContinue(responseItem, result, context, null, Result.severity.WARNING, Config.OWNER)) { ActivitySuite0_8.testFetchActivity(result, context, opensocial.Activity.Field.TITLE, activityStamp, function(activityFetched, result){ if (activityFetched) { if (opensocial.getEnvironment().supportsField( opensocial.Environment.ObjectType.ACTIVITY , opensocial.Activity.Field.TEMPLATE_PARAMS)) { var _templateParams = activityFetched.getField( opensocial.Activity.Field.TEMPLATE_PARAMS); Helper.addSubResult(result, 'Template Song', Assert.assertEquals, _templateParams['Song'], 'Do That There - (Young Einstein hoo-hoo mix)'); Helper.addSubResult(result, 'Template Artist', Assert.assertEquals, _templateParams['Artist'], 'Lyrics Born'); Helper.addSubResult(result, 'Template Viewer', Assert.assertEquals, _templateParams['Viewer'], viewer); Helper.addSubResult(result, 'Template Owner', Assert.assertEquals, _templateParams['Owner'], owner); } else { Helper.logIntoResult(result, 'templateParams is NOT supported'); } if (opensocial.getEnvironment().supportsField( opensocial.Environment.ObjectType.ACTIVITY, 'title')) { var actualTitle = activityFetched.getField( opensocial.Activity.Field.TITLE); Helper.addSubResult(result, 'Activity Title', Assert.assertEquals, actualTitle , params[opensocial.Activity.Field.TITLE]); } } callback(result); }); } else { Assert.assertDataResponseHadError( responseItem, result, null, true, Result.severity.INFO); callback(result); } }, this, context); } }, /** * Activities Creation - Fields */ { name: 'opensocial.Activity newActivity(params) with list of Activity ' + 'attributes in the params map. Only checks those that are supported.', id : 'ACT200', bugs : ['1040595'], priority: Test.PRIORITY.P1, description: 'Tests if it\'s possible to create activity with list of ' + 'Activity attributes in the params map. Only checks those ' + 'that are supported.', run: function(context, callback, result) { var today = new Date(); var activityStamp = today.getTime(); var owner = context.getOwner(); var viewer = context.getViewer(); var templateParams = {}; templateParams['Song'] = 'With or without you'; templateParams['Artist'] = 'With or without you'; templateParams['Viewer'] = viewer; templateParams['Owner'] = owner; var params = { 'titleId': '[' + this.id + ']: allFields titleId ' + today + ' ' + activityStamp, 'title': '[' + this.id + ']: allFields ' + today + ' ' + activityStamp, 'templateParams': templateParams, 'url': 'url_' + activityStamp, 'mediaItems': ActivitySuite0_8.sampleMediaItems(), 'bodyId': 'bodyId_' + activityStamp, 'body': 'This body is ' + activityStamp + '', 'externalId': 'externalId_' + activityStamp, 'streamTitle': 'streamTitle_' + activityStamp, 'streamUrl': 'streamUrl_' + activityStamp, 'streamSourceUrl': 'streamSourceUrl_' + activityStamp, 'streamFaviconUrl': 'streamFaviconUrl_' + activityStamp, 'priority': '1', 'id': 'id_' + activityStamp, 'userId': 'userId_' + activityStamp, 'appId': 'appId_' + activityStamp, 'postedTime': activityStamp }; var activity = opensocial.newActivity(params); result.addSubResult('Activity is not null', Assert.assertNotNull, activity, 'Not null.', Result.severity.INFO); //Creates the Activity on the server ActivitySuite0_8.testRequestCreateActivity(result, activity, function(result, responseItem) { if(Assert.assertDataResponseShouldContinue(responseItem, result, context, null, Result.severity.WARNING, Config.OWNER)) { ActivitySuite0_8.testFetchActivity(result, context , opensocial.Activity.Field.TITLE, activityStamp, function(activityFetched, result) { if (activityFetched) { for (var fieldName in params) { var expected = params[fieldName]; var actual = (typeof(activity.getField( fieldName)) == 'string') ? gadgets.util.unescapeString( activity.getField(fieldName)) : activity.getField(fieldName); if (opensocial.getEnvironment().supportsField( opensocial.Environment.ObjectType.ACTIVITY, fieldName)) { Helper.addSubResult(result, 'activity.getField(' + fieldName + ')', Assert.assertEquals, actual, expected); } else { Helper.addSubResult(result, 'Unsupported Field[' + fieldName + ']', Assert.assertEquals, actual, expected); } } } callback(result); }); } else { Assert.assertDataResponseHadError( responseItem, result, null, true, Result.severity.INFO); callback(result); } }, this, context); } }, { name: 'Create activity and set fields: STREAM_TITLE, STREAM_URL, ' + 'STREAM_SOURCE_URL, STREAM_FAVICON_URL', id: 'ACT202', priority: Test.PRIORITY.P1, description: 'Tests if it\'s possible to create activity with stream ' + 'params. STREAM_TITLE, STREAM_URL, STREAM_SOURCE_URL, ' + 'STREAM_FAVICON_URL', run: function(context, callback, result) { var today = new Date(); var activityStamp = today.getTime(); var title = '[' + this.id + ']: StreamFields ' + today + ' ' + activityStamp; var titleId = '[' + this.id + ']: StreamFields titleId ' + today + ' ' + activityStamp; var params = {}; params[opensocial.Activity.Field.TITLE] = title; params[opensocial.Activity.Field.TITLE_ID] = titleId; var activity = opensocial.newActivity(params); var streamTitle = 'Testing Stream Fields: STREAM_TITLE'; activity.setField(opensocial.Activity.Field.STREAM_TITLE, streamTitle); var streamUrl = 'Testing Stream Fields: STREAM_URL'; activity.setField(opensocial.Activity.Field.STREAM_URL, streamUrl); var streamSourceUrl = 'Testing Stream Fields: STREAM_SOURCE_URL'; activity.setField(opensocial.Activity.Field.STREAM_SOURCE_URL, streamSourceUrl); var streamFaviconUrl = 'Testing Stream Fields: STREAM_FAVICON_URL'; activity.setField(opensocial.Activity.Field.STREAM_FAVICON_URL, streamFaviconUrl); ActivitySuite0_8.testRequestCreateActivity(result, activity, function(result, responseItem) { if(Assert.assertDataResponseShouldContinue(responseItem, result, context, null, Result.severity.WARNING, Config.OWNER)) { ActivitySuite0_8.testFetchActivity(result, context , opensocial.Activity.Field.TITLE, activityStamp, function(activityFetched, result){ if (activityFetched) { var actualTitle = activityFetched.getField( opensocial.Activity.Field.TITLE); Helper.addSubResult(result, 'Activity Title', Assert.assertEquals, actualTitle, title); if (opensocial.getEnvironment().supportsField( opensocial.Environment.ObjectType.ACTIVITY, opensocial.Activity.Field.STREAM_TITLE)) { var _streamTitle = activityFetched.getField( opensocial.Activity.Field.STREAM_TITLE); var _streamUrl = activityFetched.getField( opensocial.Activity.Field.STREAM_URL); var _streamSourceUrl = activityFetched.getField( opensocial.Activity.Field.STREAM_SOURCE_URL); var _streamFaviconUrl = activityFetched.getField( opensocial.Activity.Field.STREAM_FAVICON_URL); Helper.addSubResult(result, 'Stream Title', Assert.assertEquals, _streamTitle, streamTitle, Result.severity.WARNING); Helper.addSubResult(result, 'Stream Url', Assert.assertEquals, _streamUrl, streamUrl, Result.severity.WARNING); Helper.addSubResult(result, 'Stream Source Url', Assert.assertEquals, _streamSourceUrl, streamSourceUrl, Result.severity.WARNING); Helper.addSubResult(result, 'Stream Favicon Url', Assert.assertEquals, _streamFaviconUrl, streamFaviconUrl, Result.severity.WARNING); } } callback(result); }); } else { Assert.assertDataResponseHadError( responseItem, result, null, true, Result.severity.INFO); callback(result); } }, this, context); } }, { name: 'Create activity and try to set read-only fields: ' + 'ID, USER_ID, APP_ID, POSTED_TIME', id: 'ACT203', priority: Test.PRIORITY.P1, description: 'Test that creating activity with read-only fields ' + 'has no side effects. Container should ignore read only ' + 'fields.', run: function(context, callback, result) { var today = new Date(); var activityStamp = today.getTime() + ''; var title = '[' + this.id + ']: ReadOnlyFields ' + today + ' ' + activityStamp; var titleId = '[' + this.id + ']: ReadOnlyFields titleId ' + today + ' ' + activityStamp; var params = {}; params[opensocial.Activity.Field.TITLE] = title; params[opensocial.Activity.Field.TITLE_ID] = titleId; var activity = opensocial.newActivity(params); var id = 'some id'; activity.setField(opensocial.Activity.Field.ID, id); var userId = 'some user_id'; activity.setField(opensocial.Activity.Field.USER_ID, userId); var appId = 'some app_id'; activity.setField(opensocial.Activity.Field.APP_ID, appId); var postedTime = activityStamp; activity.setField(opensocial.Activity.Field.POSTED_TIME, activityStamp); ActivitySuite0_8.testRequestCreateActivity(result, activity, function(result, responseItem) { if(Assert.assertDataResponseShouldContinue(responseItem, result, context, null, Result.severity.WARNING, Config.OWNER)) { ActivitySuite0_8.testFetchActivity(result, context , opensocial.Activity.Field.TITLE, activityStamp, function(activityFetched, result) { if (activityFetched) { var actualTitle = activityFetched.getField( opensocial.Activity.Field.TITLE); var _id = activityFetched.getField( opensocial.Activity.Field.ID); var _userId = activityFetched.getField( opensocial.Activity.Field.USER_ID); var _appId = activityFetched.getField( opensocial.Activity.Field.APP_ID); var _postedTime = activityFetched.getField( opensocial.Activity.Field.POSTED_TIME); Helper.addSubResult(result, 'Activity Title', Assert.assertEquals, actualTitle, title); Helper.addSubResult(result, 'Activity Id', Assert.assertNotEquals, _id, id); Helper.addSubResult(result, 'Activity User Id', Assert.assertNotEquals, _userId, userId); Helper.addSubResult(result, 'Activity App Id', Assert.assertNotEquals, _appId, appId); Helper.addSubResult(result, 'Activity Posted Time', Assert.assertNotEquals, _postedTime, postedTime); } callback(result); }); } else { Assert.assertDataResponseHadError( responseItem, result, null, true, Result.severity.INFO); callback(result); } }, this, context); } }, /** * Activities Creation - Media Items */ { name: 'opensocial.requestCreateActivity with media item', id: 'ACT300', bugs: ['1040595', '1040601'], priority: Test.PRIORITY.P1, description: 'Test that it\'s possible to creating activity with ' + 'media items. It shouldn\'t fail.', run: function(context, callback, result) { var today = new Date(); var activityStamp = today.getTime() + ''; var title = '[' + this.id + ']: ActivityWithMediaItems ' + today + ' ' + activityStamp; var titleId = '[' + this.id + ']: ActivityWithMediaItems titleId ' + today + ' ' + activityStamp; var params = {}; params[opensocial.Activity.Field.TITLE] = title; params[opensocial.Activity.Field.TITLE_ID] = titleId; var activity = opensocial.newActivity(params); activity.setField(opensocial.Activity.Field.MEDIA_ITEMS, ActivitySuite0_8.sampleMediaItems()) ActivitySuite0_8.testRequestCreateActivity(result, activity, function(result, responseItem) { if(Assert.assertDataResponseShouldContinue(responseItem, result, context, null, Result.severity.WARNING, Config.OWNER)) { ActivitySuite0_8.testFetchActivity(result, context , opensocial.Activity.Field.TITLE, activityStamp, function(activityFetched, result) { if (activityFetched) { var mediaItems = activityFetched.getField( opensocial.Activity.Field.MEDIA_ITEMS); Helper.addSubResult(result, 'MediaItems is an Array', Assert.assertDefined, mediaItems, 'Array of Media Items Defined'); Helper.addSubResult(result, 'MediaItems with 3 elements', Assert.assertEquals, mediaItems.length, ActivitySuite0_8.sampleMediaItems().length); for (var mediaItem in mediaItems) { var type = mediaItems[mediaItem].getField( opensocial.MediaItem.Field.TYPE); var url = mediaItems[mediaItem].getField( opensocial.MediaItem.Field.URL); var mimeType = mediaItems[mediaItem].getField( opensocial.MediaItem.Field.MIME_TYPE); switch (type) { case opensocial.MediaItem.Type.AUDIO: Helper.addSubResult(result, 'Media Item Audio URL' , Assert.assertEquals, url, Config.rootPath + 'suites/0.7/activities/content/beep.wav' ); Helper.addSubResult(result, 'Mime Type Audio', Assert.assertEquals, mimeType, 'audio/x-wav'); break; case opensocial.MediaItem.Type.IMAGE: Helper.addSubResult(result, 'Media Item Image URL' , Assert.assertEquals, url, Config.rootPath + 'suites/0.7/activities/content/car.jpeg'); Helper.addSubResult(result, 'Mime Type Image', Assert.assertEquals, mimeType, 'image/jpeg'); break; case opensocial.MediaItem.Type.VIDEO: Helper.addSubResult(result, 'Media Item Video URL' , Assert.assertEquals, url, Config.rootPath + 'suites/0.7/activities/content/eddie.asf'); Helper.addSubResult(result, 'Mime Type Video', Assert.assertEquals, mimeType, 'video/x-ms-asf'); break; default: Helper.addSubResult(result, 'Media not identified', Assert.assertFalse, type, 'Known Type'); break; } } } callback(result); }); } else { Assert.assertDataResponseHadError( responseItem, result, null, true, Result.severity.INFO); callback(result); } }, this, context); } }, /** * Activities Creation - Error Handling */ { name: 'Create activity without setting the title', id: 'ACT500', priority: Test.PRIORITY.P2, description: 'Test if trying to create an activity without title ' + 'throws an error.', run: function(context, callback, result) { var today = new Date(); var activity = opensocial.newActivity({'id' : today.getTime()}); opensocial.requestCreateActivity(activity, opensocial.CreateActivityPriority.HIGH, function(responseItem) { Assert.assertDataResponseItemHadError('responseItem', responseItem, result, true , opensocial.ResponseItem.Error.BAD_REQUEST , 'You must pass in an activity with a title or title id.'); callback(result); }); } }, { name: 'opensocial.requestCreateActivity using Invalid Param Keys', id: 'ACT501', priority: Test.PRIORITY.P2, description: 'Test if trying to create an activity with invalid param' + 'keys throws an error.', run: function(context, callback, result) { var today = new Date(); var owner = context.getOwner(); var viewer = context.getViewer(); var activity = opensocial.newActivity('LISTEN_TO_THIS_SONG', {Song: 'With or without you', Artist: 'U2', Subject: viewer, Owner: owner}); activity.setField(opensocial.Activity.Field.TITLE, '[' + this.id + ']: Create Activity Using Template ' + today + ' ' + today.getTime()); opensocial.requestCreateActivity(activity, opensocial.CreateActivityPriority.HIGH, function(responseItem) { Assert.assertDataResponseItemHadError('createActivity', responseItem, result, true, opensocial.ResponseItem.Error.BAD_REQUEST); callback(result); }); } }, { name: 'Create activity - empty title', id: 'ACT502', priority: Test.PRIORITY.P2, description: 'Test if trying to create an activity with empty title' + ' throws an error.', run: function(context, callback, result) { var activity = opensocial.newActivity({'title' : ''}); opensocial.requestCreateActivity(activity, opensocial.CreateActivityPriority.HIGH, function(responseItem) { Assert.assertDataResponseItemHadError('responseItem', responseItem, result, true, opensocial.ResponseItem.Error.BAD_REQUEST, 'You must pass in an activity with a title or title id.'); callback(result); }); } } ] }; /** * Tries to create an activity. * * @param activity The activity to create. * @param callback The callback function, usually to write the test results. * @param test The test reference to create the result. */ ActivitySuite0_8.testRequestCreateActivity = function(result, activity, callback, test, context) { opensocial.requestCreateActivity(activity, opensocial.CreateActivityPriority.HIGH, function(responseItem) { Helper.addSubResult(result, 'responseItem defined', Assert.assertTrue, responseItem != undefined, 'defined'); if (responseItem) { if (context.getOwner().isViewer()) { Helper.addUnsevereSubResult(result, 'responseItem.hadError()', Assert.assertFalse, responseItem.hadError(), 'false'); Helper.addUnsevereSubResult(result, 'responseItem.getErrorCode()', Assert.assertNull, responseItem.getErrorCode(), 'null'); } else { Helper.addUnsevereSubResult(result, 'responseItem.hadError()', Assert.assertTrue, responseItem.hadError(), 'true'); } } callback(result, responseItem); }); } ActivitySuite0_8.testFetchActivity = function(result, context, criteria, activityStamp, callback) { criteria = criteria || opensocial.Activity.Field.TITLE; var activity = null; var req = opensocial.newDataRequest(); req.add(req.newFetchActivitiesRequest(Config.OWNER), 'activities'); req.send(function(dataResponse) { if(Assert.assertDataResponseShouldContinue(dataResponse, result, context, Result.severity.WARNING)) { // bug fix for 0.8 var activities = dataResponse.get('activities').getData().asArray(); Helper.addUnsevereSubResult(result, 'At least one activity to ' + 'iterate', Assert.assertTrue, activities.length > 0, activities.length); var index = 0; var found = false; while (!found && index < activities.length) { var activityStep = activities[index]; var fieldValue = activityStep.getField(criteria); if (Assert.assertStringContains(fieldValue, activityStamp)) { found = true; activity = activityStep; } index ++; } Helper.addUnsevereSubResult(result, 'Activity Found', Assert.assertDefined, activity, 'Activity fetched'); callback(activity, result); } else { Helper.addUnsevereSubResult(result, 'Activity Fetching : ' + 'dataResponse.hadError() :', Assert.assertTrue, dataResponse.hadError(), 'false', Result.severity.INFO); callback(null, result); } }); } /** * Tries to fetch activities for a given idSpec, and tests that the dataResponse * is not null and gets an error, because for now reading activities is not * supported. * * @param idSpec The id specification, like 'VIEWER'. * @param callback The callback function, usually to write the test results. * @param test The test reference to create the result. * @param opt_viewerOrOwner whether to succeed if viewerOrOwner is present */ ActivitySuite0_8.testNewFetchActivityRequestFor = function(idSpec, callback, result, context, method, opt_viewerOrOwner){ var req = opensocial.newDataRequest(); req.add(req.newFetchActivitiesRequest(idSpec), 'activities'); Helper.logIntoResult(result, 'fetchActivity for idSpec', idSpec); req.send(function(dataResponse) { if(Assert.assertDataResponseShouldContinue(dataResponse, result, context, null, Result.severity.WARNING, opt_viewerOrOwner)) { // bug fix for 0.8 var activities = dataResponse.get('activities').getData().asArray(); Helper.addSubResult(result, 'Activities Array', Assert.assertDefined, activities, 'activities defined'); Helper.logIntoResult(result, 'activities.length', activities.length); Helper.addSubResult(result, 'activities.length > 0', method, (activities.length > 0), 'activities.length > 0', Result.severity.WARNING); if (activities.length > 0) { for (var i = 0 ; i < activities.length; i++){ var id = activities[i].getField(opensocial.Activity.Field.ID); Helper.addSubResult(result, 'Activity Id: ', Assert.assertDefined, id, 'Id is defned'); } } } else { Helper.addUnsevereSubResult(result, 'Activity Fetching Failed: ' + 'dataResponse.hadError', Assert.fail, dataResponse.hadError(), false); } ActivitySuite0_8.callbackExecuted = true; callback(result); }); } ActivitySuite0_8.sampleMediaItems = function() { var imageUrl = Config.rootPath + 'suites/0.7/activities/content/car.jpeg'; var imageParams = {}; imageParams[opensocial.MediaItem.Field.MIME_TYPE] = 'image/jpeg'; imageParams[opensocial.MediaItem.Field.TYPE] = opensocial.MediaItem.Type.IMAGE; imageParams[opensocial.MediaItem.Field.URL] = imageUrl; var imageItem = opensocial.newMediaItem('image/jpeg', imageUrl, imageParams); var audioUrl = Config.rootPath + 'suites/0.7/activities/content/beep.wav'; var audioParams = {}; audioParams[opensocial.MediaItem.Field.MIME_TYPE] = 'audio/x-wav'; audioParams[opensocial.MediaItem.Field.TYPE] = opensocial.MediaItem.Type.AUDIO; audioParams[opensocial.MediaItem.Field.URL] = audioUrl; var audioItem = opensocial.newMediaItem('audio/x-wav', audioUrl, audioParams); var videoUrl = Config.rootPath + 'suites/0.7/activities/content/eddie.asf'; var videoParams = {}; videoParams[opensocial.MediaItem.Field.MIME_TYPE] = 'video/x-ms-asf'; videoParams[opensocial.MediaItem.Field.TYPE] = opensocial.MediaItem.Type.VIDEO; videoParams[opensocial.MediaItem.Field.URL] = videoUrl; var videoItem = opensocial.newMediaItem( 'video/x-ms-asf', videoUrl, videoParams); return [imageItem, audioItem, videoItem]; }