Simon Hunt

GUI -- Created the RestService in the Remote module.

- implemented get() function (with unit tests).

Change-Id: I65edb5422ed3719d8bdc262e398673e0a1db3f0b
/*
* Copyright 2015 Open Networking Laboratory
*
* 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.
*/
/*
ONOS GUI -- Remote Communications Module
@author Bri Prebilic Cole
@author Simon Hunt
*/
(function () {
'use strict';
angular.module('onosRemote', ['onosUtil']);
}());
/*
* Copyright 2015 Open Networking Laboratory
*
* 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.
*/
/*
ONOS GUI -- Remote Communications Module -- REST Service
@author Bri Prebilic Cole
@author Simon Hunt
*/
(function () {
'use strict';
var $log;
angular.module('onosRemote')
.factory('RestService', ['$log', '$http', function (_$log_, $http) {
$log = _$log_;
function get(url, callback) {
$http.get(url).then(function (response) {
// success
callback(response.data);
}, function (response) {
// error
$log.warn('Failed to retrieve JSON data: ' + url,
response.status, response.data);
});
}
return {
get: get
};
}]);
}());
/*
* Copyright 2015 Open Networking Laboratory
*
* 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.
*/
/*
ONOS GUI -- Remote -- REST Service - Unit Tests
@author Bri Prebilic Cole
@author Simon Hunt
*/
describe('factory: fw/remote/rest.js', function() {
var $log, $httpBackend, fs, rs, promise;
beforeEach(module('onosUtil', 'onosRemote'));
beforeEach(inject(function (_$log_, _$httpBackend_, FnService, RestService) {
$log = _$log_;
$httpBackend = _$httpBackend_;
fs = FnService;
rs = RestService;
}));
it('should define RestService', function () {
expect(rs).toBeDefined();
});
it('should define api functions', function () {
expect(fs.areFunctions(rs, [
'get'
])).toBeTruthy();
});
var mockData = {
id: 1,
prop: 'abc'
};
it('should fetch remote data', function () {
var called = 0,
capture = null;
$httpBackend.expectGET('/bar').respond(mockData);
spyOn($log, 'warn');
rs.get('/bar', function (data) {
called++;
capture = data;
});
expect(called).toEqual(0);
expect(capture).toBeNull();
$httpBackend.flush();
expect(called).toEqual(1);
expect(capture).toEqual(mockData);
expect($log.warn).not.toHaveBeenCalled();
});
it('should fail to fetch remote data', function () {
var called = 0,
capture = null;
$httpBackend.expectGET('/bar').respond(404, 'Not Found');
spyOn($log, 'warn');
rs.get('/bar', function (data) {
called++;
capture = data;
});
expect(called).toEqual(0);
expect(capture).toBeNull();
$httpBackend.flush();
expect(called).toEqual(0);
expect(capture).toBeNull();
expect($log.warn)
.toHaveBeenCalledWith('Failed to retrieve JSON data: /bar',
404, 'Not Found');
});
});
......@@ -29,6 +29,7 @@ module.exports = function(config) {
'../app/directives.js',
'../app/fw/util/util.js',
'../app/fw/svg/svg.js',
'../app/fw/remote/remote.js',
// now load services etc. that augment the modules
'../app/**/*.js',
......