blob: 871ca188a13eaadc32075d9c2065f46566d9885a [file] [log] [blame]
# Copyright 2017-present Open Networking Foundation
#
# 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.
from __future__ import absolute_import
from __future__ import print_function
from . import helpers # noqa: F401
import unittest
import os
from xosgenx.generator import XOSProcessor, XOSProcessorArgs
current_dir = os.path.dirname(os.path.realpath(__file__))
OUTPUT_DIR = os.path.join(current_dir, "out")
print(OUTPUT_DIR)
class TOSCA_Generator_Test(unittest.TestCase):
def test_generate_basic_tosca(self):
"""
[TOSCA_xtarget] Should generate a basic TOSCA recipe
"""
xproto = """
option app_label = "core";
message XOSGuiExtension (XOSBase) {
option verbose_name="XOS GUI Extension";
option description="This model holds the instruction to load an extension in the GUI";
required string name = 1 [
max_length = 200,
content_type = "stripped",
blank = False,
help_text = "Name of the GUI Extensions",
null = False,
db_index = False
];
required string files = 2 [
max_length = 1024,
content_type = "stripped",
blank = False,
help_text = "List of comma separated file composing the view",
null = False,
db_index = False
];
}
"""
args = XOSProcessorArgs(
inputs=xproto,
target=os.path.join(current_dir, "../src/tosca/xtarget/tosca.xtarget"),
output=OUTPUT_DIR,
write_to_file="single",
dest_file="basic.yaml",
quiet=False,
)
output = XOSProcessor.process(args)
self.assertIn("name:", output)
self.assertIn("files:", output)
def test_generate_inherithed_tosca(self):
"""
[TOSCA_xtarget] Should generate a TOSCA recipe for a models that inherits from another model
"""
xproto = """
option app_label = "core";
message Service (XosBase) {
option verbose_name="Basic Service";
required string name = 1 [
max_length = 200,
content_type = "stripped",
blank = False,
null = False,
db_index = False
];
}
message MyService (Service) {
option verbose_name="Extending service";
required string prop = 1 [
max_length = 200,
content_type = "stripped",
blank = False,
null = False,
db_index = False
];
}
"""
args = XOSProcessorArgs(
inputs=xproto,
target=os.path.join(current_dir, "../src/tosca/xtarget/tosca.xtarget"),
output=OUTPUT_DIR,
write_to_file="target",
quiet=False,
)
output = XOSProcessor.process(args)
self.assertEqual(output.count("name:"), 4)
self.assertIn("prop:", output)
if __name__ == "__main__":
unittest.main()