4a5cf0b5c1
* [GCP] UrlMap module This module provides support for UrlMaps on Google Cloud Platform. UrlMaps allow users to segment requests by hostname and path and direct those requests to Backend Services. UrlMaps are a powerful and necessary part of HTTP(S) Global Load Balancing on Google Cloud Platform. UrlMap takes advantage of the python-api so the appropriate infrastructure has been added to module_utils. More about UrlMaps can be found at: https://cloud.google.com/compute/docs/load-balancing/http/url-map UrlMap API: https://cloud.google.com/compute/docs/reference/latest/ Google Cloud Platform HTTP(S) Cross-Region Load Balancer: https://cloud.google.com/compute/docs/load-balancing/http/ * updated documentation, remmoved parens * fixed tabs
164 lines
5.9 KiB
Python
164 lines
5.9 KiB
Python
import unittest
|
|
|
|
from ansible.modules.cloud.google.gcp_url_map import _build_path_matchers, _build_url_map_dict
|
|
|
|
|
|
class TestGCPUrlMap(unittest.TestCase):
|
|
"""Unit tests for gcp_url_map module."""
|
|
params_dict = {
|
|
'url_map_name': 'foo_url_map_name',
|
|
'description': 'foo_url_map description',
|
|
'host_rules': [
|
|
{
|
|
'description': 'host rules description',
|
|
'hosts': [
|
|
'www.example.com',
|
|
'www2.example.com'
|
|
],
|
|
'path_matcher': 'host_rules_path_matcher'
|
|
}
|
|
],
|
|
'path_matchers': [
|
|
{
|
|
'name': 'path_matcher_one',
|
|
'description': 'path matcher one',
|
|
'defaultService': 'bes-pathmatcher-one-default',
|
|
'pathRules': [
|
|
{
|
|
'service': 'my-one-bes',
|
|
'paths': [
|
|
'/',
|
|
'/aboutus'
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
'name': 'path_matcher_two',
|
|
'description': 'path matcher two',
|
|
'defaultService': 'bes-pathmatcher-two-default',
|
|
'pathRules': [
|
|
{
|
|
'service': 'my-two-bes',
|
|
'paths': [
|
|
'/webapp',
|
|
'/graphs'
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
|
|
def test__build_path_matchers(self):
|
|
input_list = [
|
|
{
|
|
'defaultService': 'bes-pathmatcher-one-default',
|
|
'description': 'path matcher one',
|
|
'name': 'path_matcher_one',
|
|
'pathRules': [
|
|
{
|
|
'paths': [
|
|
'/',
|
|
'/aboutus'
|
|
],
|
|
'service': 'my-one-bes'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
'defaultService': 'bes-pathmatcher-two-default',
|
|
'description': 'path matcher two',
|
|
'name': 'path_matcher_two',
|
|
'pathRules': [
|
|
{
|
|
'paths': [
|
|
'/webapp',
|
|
'/graphs'
|
|
],
|
|
'service': 'my-two-bes'
|
|
}
|
|
]
|
|
}
|
|
]
|
|
expected = [
|
|
{
|
|
'defaultService': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/bes-pathmatcher-one-default',
|
|
'description': 'path matcher one',
|
|
'name': 'path_matcher_one',
|
|
'pathRules': [
|
|
{
|
|
'paths': [
|
|
'/',
|
|
'/aboutus'
|
|
],
|
|
'service': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/my-one-bes'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
'defaultService': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/bes-pathmatcher-two-default',
|
|
'description': 'path matcher two',
|
|
'name': 'path_matcher_two',
|
|
'pathRules': [
|
|
{
|
|
'paths': [
|
|
'/webapp',
|
|
'/graphs'
|
|
],
|
|
'service': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/my-two-bes'
|
|
}
|
|
]
|
|
}
|
|
]
|
|
actual = _build_path_matchers(input_list, 'my-project')
|
|
self.assertEqual(expected, actual)
|
|
|
|
def test__build_url_map_dict(self):
|
|
|
|
expected = {
|
|
'description': 'foo_url_map description',
|
|
'hostRules': [
|
|
{
|
|
'description': 'host rules description',
|
|
'hosts': [
|
|
'www.example.com',
|
|
'www2.example.com'
|
|
],
|
|
'pathMatcher': 'host_rules_path_matcher'
|
|
}
|
|
],
|
|
'name': 'foo_url_map_name',
|
|
'pathMatchers': [
|
|
{
|
|
'defaultService': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/bes-pathmatcher-one-default',
|
|
'description': 'path matcher one',
|
|
'name': 'path_matcher_one',
|
|
'pathRules': [
|
|
{
|
|
'paths': [
|
|
'/',
|
|
'/aboutus'
|
|
],
|
|
'service': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/my-one-bes'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
'defaultService': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/bes-pathmatcher-two-default',
|
|
'description': 'path matcher two',
|
|
'name': 'path_matcher_two',
|
|
'pathRules': [
|
|
{
|
|
'paths': [
|
|
'/webapp',
|
|
'/graphs'
|
|
],
|
|
'service': 'https://www.googleapis.com/compute/v1/projects/my-project/global/backendServices/my-two-bes'
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
actual = _build_url_map_dict(self.params_dict, 'my-project')
|
|
self.assertEqual(expected, actual)
|