| /* |
| * Copyright 2015-present 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 |
| */ |
| describe('factory: fw/remote/rest.js', function() { |
| var $log, $httpBackend, fs, rs; |
| |
| beforeEach(module('onosUtil', 'onosRemote')); |
| |
| beforeEach(module(function($provide) { |
| $provide.factory('$location', function () { |
| return { |
| protocol: function () { return 'http'; }, |
| host: function () { return 'foo'; }, |
| port: function () { return '80'; }, |
| search: function() { |
| return {debug: 'true'}; |
| }, |
| absUrl: function () { |
| return 'http://foo:123/onos/ui/rs/path'; |
| } |
| }; |
| }); |
| })); |
| |
| 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', |
| 'post' |
| ])).toBeTruthy(); |
| }); |
| |
| var mockData = { |
| id: 1, |
| prop: 'abc' |
| }; |
| |
| it('should fetch remote data', function () { |
| var called = 0, |
| capture = null; |
| $httpBackend.whenGET(/.*/).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.whenGET(/.*/).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: http://foo:80/onos/ui/rs/bar', |
| 404, 'Not Found'); |
| }); |
| |
| }); |