Example #1
0
 def create_methods(self):
     """Create a Method wrapper for say_hello and return it"""
     method = Method("say_hello", "says hello")
     method.set_function(self.say_hello)
     takes = MapMeta("takes")
     takes.add_element(StringMeta("name", "a name"))
     method.set_function_takes(takes)
     returns = MapMeta("returns")
     returns.add_element(StringMeta("greeting", "a greeting"))
     method.set_function_returns(returns)
     yield method
Example #2
0
 def test_handle_request(self):
     func = Mock(return_value={"output": 1})
     args_meta = Mock(elements={"first": Mock()})
     return_meta = Mock(elements={"output": Mock()})
     m = Method("test_method", "test_description")
     m.set_function(func)
     m.set_function_takes(args_meta)
     m.set_function_returns(return_meta)
     request = Mock(
             id=(123, Mock()), type="Post", parameters={"first": 2},
             respond_with_return=Mock())
     m.handle_request(request)
     func.assert_called_with({"first": 2})
     request.respond_with_return.assert_called_with({"output": 1})
Example #3
0
 def test_incomplete_return(self):
     func = Mock(return_value={"output1": 2})
     m = Method("test_method", "test_description")
     m.set_function(func)
     args_meta = Mock()
     args_meta.elements = {"first": Mock(), "second": Mock()}
     return_meta = Mock()
     return_meta.elements = {"output1": Mock(), "output2": Mock()}
     validator = Mock(return_value=True)
     return_meta.elements["output1"].validate = validator
     return_meta.elements["output2"].validate = validator
     m.set_function_takes(args_meta)
     m.set_function_returns(return_meta)
     self.assertRaises(ValueError, m, first=1, second=2)
     func.assert_called_with({"first": 1, "second": 2})
Example #4
0
 def test_handle_request(self):
     func = Mock(return_value={"output": 1})
     args_meta = Mock(elements={"first": Mock()})
     return_meta = Mock(elements={"output": Mock()})
     m = Method("test_method", "test_description")
     m.set_function(func)
     m.set_function_takes(args_meta)
     m.set_function_returns(return_meta)
     request = Mock(id=(123, Mock()),
                    type="Post",
                    parameters={"first": 2},
                    respond_with_return=Mock())
     m.handle_request(request)
     func.assert_called_with({"first": 2})
     request.respond_with_return.assert_called_with({"output": 1})
Example #5
0
 def test_incomplete_return(self):
     func = Mock(return_value={"output1": 2})
     m = Method("test_method", "test_description")
     m.set_function(func)
     args_meta = Mock()
     args_meta.elements = {"first": Mock(), "second": Mock()}
     return_meta = Mock()
     return_meta.elements = {"output1": Mock(), "output2": Mock()}
     validator = Mock(return_value=True)
     return_meta.elements["output1"].validate = validator
     return_meta.elements["output2"].validate = validator
     m.set_function_takes(args_meta)
     m.set_function_returns(return_meta)
     self.assertRaises(ValueError, m, first=1, second=2)
     func.assert_called_with({"first": 1, "second": 2})
Example #6
0
 def test_invalid_return(self):
     func = Mock(return_value={"output1": 2, "output2": 4})
     m = Method("test_method", "test_description")
     m.set_function(func)
     args_meta = Mock()
     args_meta.elements = {"first": Mock(), "second": Mock()}
     return_meta = Mock()
     return_meta.elements = {"output1": Mock(), "output2": Mock()}
     validator1 = Mock(return_value=True)
     validator2 = Mock(side_effect=TypeError("Fake type error"))
     return_meta.elements["output1"].validate = validator1
     return_meta.elements["output2"].validate = validator2
     m.set_function_takes(args_meta)
     m.set_function_returns(return_meta)
     self.assertRaises(TypeError, m, first=1, second=2)
     func.assert_called_with({"first": 1, "second": 2})
     validator2.assert_called_with(4)
Example #7
0
 def test_invalid_return(self):
     func = Mock(return_value={"output1": 2, "output2": 4})
     m = Method("test_method", "test_description")
     m.set_function(func)
     args_meta = Mock()
     args_meta.elements = {"first": Mock(), "second": Mock()}
     return_meta = Mock()
     return_meta.elements = {"output1": Mock(), "output2": Mock()}
     validator1 = Mock(return_value=True)
     validator2 = Mock(side_effect=TypeError("Fake type error"))
     return_meta.elements["output1"].validate = validator1
     return_meta.elements["output2"].validate = validator2
     m.set_function_takes(args_meta)
     m.set_function_returns(return_meta)
     self.assertRaises(TypeError, m, first=1, second=2)
     func.assert_called_with({"first": 1, "second": 2})
     validator2.assert_called_with(4)
Example #8
0
 def test_valid_return(self):
     func = Mock(return_value={"output1": 2, "output2": 4})
     m = Method("test_method", "test_description")
     m.set_function(func)
     args_meta = Mock()
     args_meta.elements = {"first": Mock(), "second": Mock()}
     args_meta.required = ["first", "second"]
     return_meta = Mock()
     return_meta.elements = {"output1": Mock(), "output2": Mock()}
     validator1 = Mock(return_value=True)
     validator2 = Mock(return_value=True)
     return_meta.elements["output1"].validate = validator1
     return_meta.elements["output2"].validate = validator2
     m.set_function_takes(args_meta)
     m.set_function_returns(return_meta)
     self.assertEquals({"output1": 2, "output2": 4}, m(first=1, second=2))
     func.assert_called_with({"first": 1, "second": 2})
     validator1.assert_called_with(2)
     validator2.assert_called_with(4)
Example #9
0
 def test_to_dict_serialization(self):
     func = Mock(return_value={"out": "dummy"})
     defaults = {"in_attr": "default"}
     args_meta = Mock(
         elements={"first": Mock()},
         to_dict=Mock(return_value=OrderedDict({"dict": "args"})))
     return_meta = Mock(
         elements={"out": Mock()},
         to_dict=Mock(return_value=OrderedDict({"dict": "return"})))
     m = Method("test_method", "test_description")
     m.set_function(func)
     m.set_function_takes(args_meta, defaults)
     m.set_function_returns(return_meta)
     expected = OrderedDict()
     expected["description"] = "test_description"
     expected["takes"] = OrderedDict({"dict": "args"})
     expected["defaults"] = OrderedDict({"in_attr": "default"})
     expected["returns"] = OrderedDict({"dict": "return"})
     self.assertEquals(expected, m.to_dict())
Example #10
0
 def test_valid_return(self):
     func = Mock(return_value={"output1": 2, "output2": 4})
     m = Method("test_method", "test_description")
     m.set_function(func)
     args_meta = Mock()
     args_meta.elements = {"first": Mock(), "second": Mock()}
     args_meta.required = ["first", "second"]
     return_meta = Mock()
     return_meta.elements = {"output1": Mock(), "output2": Mock()}
     validator1 = Mock(return_value=True)
     validator2 = Mock(return_value=True)
     return_meta.elements["output1"].validate = validator1
     return_meta.elements["output2"].validate = validator2
     m.set_function_takes(args_meta)
     m.set_function_returns(return_meta)
     self.assertEquals({"output1": 2, "output2": 4}, m(first=1, second=2))
     func.assert_called_with({"first": 1, "second": 2})
     validator1.assert_called_with(2)
     validator2.assert_called_with(4)
Example #11
0
 def test_to_dict_serialization(self):
     func = Mock(return_value={"out": "dummy"})
     defaults = {"in_attr": "default"}
     args_meta = Mock(elements={"first": Mock()},
                      to_dict=Mock(
                          return_value=OrderedDict({"dict": "args"})))
     return_meta = Mock(elements={"out": Mock()},
                        to_dict=Mock(
                            return_value=OrderedDict({"dict": "return"})))
     m = Method("test_method", "test_description")
     m.set_function(func)
     m.set_function_takes(args_meta, defaults)
     m.set_function_returns(return_meta)
     expected = OrderedDict()
     expected["description"] = "test_description"
     expected["takes"] = OrderedDict({"dict": "args"})
     expected["defaults"] = OrderedDict({"in_attr": "default"})
     expected["returns"] = OrderedDict({"dict": "return"})
     self.assertEquals(expected, m.to_dict())