js-openstack-lib/test/unit/helpers/data/nova.js

188 lines
5.4 KiB
JavaScript

/*
* Copyright (c) 2016 Hewlett Packard Enterprise Development L.P.
*
* 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.
*/
/**
* This file contains test data for fetchMock, to simplify bootstrapping of unit tests for
* nova. Most of these are functions, as FetchMock does not perform a safe clone of the
* instances, and may accidentally modify them at runtime.
*/
/**
* A catalog entry that matches what we expect from the Keystone Catalog for nova compute.
*/
const novaConfig = {
region_id: 'RegionOne',
url: 'http://192.168.99.99:8774/v2.1',
region: 'RegionOne',
interface: 'public',
id: 'be681632633d4a62a781148c2fedd6aa'
}
/**
* Build a new FetchMock configuration for the root endpoint.
*
* @returns {{}} A full FetchMock configuration for Nova's Root Resource.
*/
function rootResponse () {
return {
method: 'GET',
matcher: 'http://192.168.99.99:8774/',
response: {
versions: [{
status: 'CURRENT',
updated: '2013-07-23T11:33:21Z',
links: [{ href: 'http://192.168.99.99:8774/v2.1/', rel: 'self' }],
min_version: '2.1',
version: '2.38',
id: 'v2.1'
}, {
status: 'SUPPORTED',
updated: '2011-01-21T11:33:21Z',
links: [{ href: 'http://192.168.99.99:8774/v2/', rel: 'self' }],
min_version: '',
version: '',
id: 'v2.0'
}]
}
}
}
/**
* Create a FAILING response to the version endpoint.
*
* @param {String} version The version ID.
* @return {{}} A FetchMock configuration for this request's response.
*/
function versionedRootResponse (version = 'v2.1') {
return {
method: 'GET',
matcher: `http://192.168.99.99:8774/${version}`,
response: {
status: 401
}
}
}
/**
* Simulate an imageList response.
*
* @param {String} token An auth token.
* @return {{}} A FetchMock configuration for this request's response.
*/
function flavorList (token) {
return {
method: 'GET',
matcher: 'http://192.168.99.99:8774/v2.1/flavors',
headers: {
'X-Auth-Token': token
},
response: {
flavors: [{
id: '1',
links: [
{ href: 'http://192.168.99.99:8774/v2.1/flavors/1', rel: 'self' },
{ href: 'http://192.168.99.99:8774/flavors/1', rel: 'bookmark' }
],
name: 'm1.tiny'
}, {
id: '2',
links: [
{ href: 'http://192.168.99.99:8774/v2.1/flavors/2', rel: 'self' },
{ href: 'http://192.168.99.99:8774/flavors/2', rel: 'bookmark' }
],
name: 'm1.small'
}, {
id: '3',
links: [
{ href: 'http://192.168.99.99:8774/v2.1/flavors/3', rel: 'self' },
{ href: 'http://192.168.99.99:8774/flavors/3', rel: 'bookmark' }
],
name: 'm1.medium'
}, {
id: '4',
links: [
{ href: 'http://192.168.99.99:8774/v2.1/flavors/4', rel: 'self' },
{ href: 'http://192.168.99.99:8774/flavors/4', rel: 'bookmark' }
],
name: 'm1.large'
}, {
id: '42',
links: [
{ href: 'http://192.168.99.99:8774/v2.1/flavors/42', rel: 'self' },
{ href: 'http://192.168.99.99:8774/flavors/42', rel: 'bookmark' }
],
name: 'm1.nano'
}, {
id: '5',
links: [
{ href: 'http://192.168.99.99:8774/v2.1/flavors/5', rel: 'self' },
{ href: 'http://192.168.99.99:8774/flavors/5', rel: 'bookmark' }
],
name: 'm1.xlarge'
}, {
id: '84',
links: [
{ href: 'http://192.168.99.99:8774/v2.1/flavors/84', rel: 'self' },
{ href: 'http://192.168.99.99:8774/flavors/84', rel: 'bookmark' }
],
name: 'm1.micro'
}, {
id: 'c1',
links: [
{ href: 'http://192.168.99.99:8774/v2.1/flavors/c1', rel: 'self' },
{ href: 'http://192.168.99.99:8774/flavors/c1', rel: 'bookmark' }
],
name: 'cirros256'
}, {
id: 'd1',
links: [
{ href: 'http://192.168.99.99:8774/v2.1/flavors/d1', rel: 'self' },
{ href: 'http://192.168.99.99:8774/flavors/d1', rel: 'bookmark' }
],
name: 'ds512M'
}, {
id: 'd2',
links: [
{ href: 'http://192.168.99.99:8774/v2.1/flavors/d2', rel: 'self' },
{ href: 'http://192.168.99.99:8774/flavors/d2', rel: 'bookmark' }
],
name: 'ds1G'
}, {
id: 'd3',
links: [
{ href: 'http://192.168.99.99:8774/v2.1/flavors/d3', rel: 'self' },
{ href: 'http://192.168.99.99:8774/flavors/d3', rel: 'bookmark' }
],
name: 'ds2G'
}, {
id: 'd4',
links: [
{ href: 'http://192.168.99.99:8774/v2.1/flavors/d4', rel: 'self' },
{ href: 'http://192.168.99.99:8774/flavors/d4', rel: 'bookmark' }
],
name: 'ds4G'
}]
}
}
}
export {
novaConfig as config,
rootResponse as root,
versionedRootResponse as rootVersion,
flavorList
}