blob: 17997a520b6057c74f016f66df04b2b046449ab1 [file] [log] [blame]
Marc Koderer6ee82dc2014-02-17 10:26:29 +01001# Copyright 2014 Deutsche Telekom AG
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15
16import copy
17
Doug Hellmann583ce2c2015-03-11 14:55:46 +000018from oslo_log import log as logging
19
Marc Koderer6ee82dc2014-02-17 10:26:29 +010020import tempest.common.generator.base_generator as base
21import tempest.common.generator.valid_generator as valid
Marc Koderer6ee82dc2014-02-17 10:26:29 +010022
23LOG = logging.getLogger(__name__)
24
25
26class NegativeTestGenerator(base.BasicGeneratorSet):
27 @base.generator_type("string")
28 @base.simple_generator
29 def gen_int(self, _):
30 return 4
31
32 @base.generator_type("integer")
33 @base.simple_generator
34 def gen_string(self, _):
35 return "XXXXXX"
36
37 @base.generator_type("integer", "string")
38 def gen_none(self, schema):
39 # Note(mkoderer): it's not using the decorator otherwise it'd be
40 # filtered
41 expected_result = base._check_for_expected_result('gen_none', schema)
42 return ('gen_none', None, expected_result)
43
44 @base.generator_type("string")
45 @base.simple_generator
46 def gen_str_min_length(self, schema):
47 min_length = schema.get("minLength", 0)
48 if min_length > 0:
49 return "x" * (min_length - 1)
50
Marc Kodererf07f5d12014-09-01 09:47:23 +020051 @base.generator_type("string", needed_property="maxLength")
Marc Koderer6ee82dc2014-02-17 10:26:29 +010052 @base.simple_generator
53 def gen_str_max_length(self, schema):
54 max_length = schema.get("maxLength", -1)
Marc Kodererf07f5d12014-09-01 09:47:23 +020055 return "x" * (max_length + 1)
Marc Koderer6ee82dc2014-02-17 10:26:29 +010056
Marc Kodererf07f5d12014-09-01 09:47:23 +020057 @base.generator_type("integer", needed_property="minimum")
Marc Koderer6ee82dc2014-02-17 10:26:29 +010058 @base.simple_generator
59 def gen_int_min(self, schema):
Marc Kodererf07f5d12014-09-01 09:47:23 +020060 minimum = schema["minimum"]
61 if "exclusiveMinimum" not in schema:
62 minimum -= 1
63 return minimum
Marc Koderer6ee82dc2014-02-17 10:26:29 +010064
Marc Kodererf07f5d12014-09-01 09:47:23 +020065 @base.generator_type("integer", needed_property="maximum")
Marc Koderer6ee82dc2014-02-17 10:26:29 +010066 @base.simple_generator
67 def gen_int_max(self, schema):
Marc Kodererf07f5d12014-09-01 09:47:23 +020068 maximum = schema["maximum"]
69 if "exclusiveMaximum" not in schema:
70 maximum += 1
71 return maximum
Marc Koderer6ee82dc2014-02-17 10:26:29 +010072
Marc Kodererf07f5d12014-09-01 09:47:23 +020073 @base.generator_type("object", needed_property="additionalProperties")
Marc Koderer6ee82dc2014-02-17 10:26:29 +010074 @base.simple_generator
75 def gen_obj_add_attr(self, schema):
76 valid_schema = valid.ValidTestGenerator().generate_valid(schema)
Marc Kodererf07f5d12014-09-01 09:47:23 +020077 new_valid = copy.deepcopy(valid_schema)
78 new_valid["$$$$$$$$$$"] = "xxx"
79 return new_valid