示例#1
0
文件: test.py 项目: GedasB/D365BCAPI
 def test_insert_OK(self):
     with mock.patch('D365BCAPI.D365BCv1API.requests') as mocked_req:
         mocked_req.post.return_value.status_code = 201
         mocked_req.post.return_value.reason = 'Created'
         ins = Connect('http://test.lt/test', auth={'a': 'a'}, headers={'some headers'})
         respo = ins.insert({"orderid": "123456"})
         mocked_req.post.assert_called_with('http://test.lt/test', auth={'a': 'a'},
                                            headers={'some headers'}, json={"orderid": "123456"})
         self.assertEqual(respo, [201, 'Created'], 'insert: no error returns [201, Created] ')  # without error
示例#2
0
文件: test.py 项目: GedasB/D365BCAPI
 def test_modify_OK(self):
     with mock.patch('D365BCAPI.D365BCv1API.requests') as mocked_req:
         mocked_req.get.return_value.status_code = 200
         mocked_req.patch.return_value.status_code = 200
         mocked_req.patch.return_value.reason = 'OK'
         modi = Connect('http://test.lt/test(123456789abcd)', auth={'a': 'a'}, headers={'some headers'})
         respo = modi.modify(json_body={"orderid": "123456"})
         mocked_req.patch.assert_called_with('http://test.lt/test(123456789abcd)', auth={'a': 'a'},
                                             headers={'some headers'}, json={"orderid": "123456"})
         self.assertEqual(respo, [200, 'OK'], 'modify: no error - returns [204, OK]')
示例#3
0
文件: test.py 项目: GedasB/D365BCAPI
 def test_delete_OK(self):
     with mock.patch('D365BCAPI.D365BCv1API.requests') as mocked_req:
         mocked_req.get.return_value.status_code = 200
         mocked_req.delete.return_value.status_code = 204
         mocked_req.delete.return_value.reason = 'OK'
         dele = Connect('http://test.lt/test(123456789abcd)', auth={'a': 'a'}, headers={'some headers'})
         respo = dele.delete()
         mocked_req.delete.assert_called_with('http://test.lt/test(123456789abcd)', auth={'a': 'a'},
                                              headers={'some headers'})
         self.assertEqual(respo, [204, 'OK'], 'delete: no error - returns [204, OK]')
示例#4
0
文件: test.py 项目: GedasB/D365BCAPI
 def test_exe_OK(self):
     with mock.patch('D365BCAPI.D365BCv1API.requests') as mocked_req:
         mocked_req.post.return_value.status_code = 204
         mocked_req.post.return_value.reason = 'No content'
         ex = Connect('http://test.lt/test(123456789abcd)/NAV.Action', auth={'a': 'a'}, headers={'some headers'})
         respo = ex.exe()
         mocked_req.post.assert_called_with('http://test.lt/test(123456789abcd)/NAV.Action', auth={'a': 'a'},
                                            headers={'some headers'}, json=None)
         self.assertEqual(respo, [204, 'No content'],
                          'execution: no error returns [204, No content] ')  # without error
示例#5
0
文件: test.py 项目: GedasB/D365BCAPI
 def test_read_OK(self):
     with mock.patch('D365BCAPI.D365BCv1API.requests') as mocked_req:
         mocked_req.get.return_value.status_code = 200
         r = Connect('http://test.lt/test', auth={'a': 'a'}, headers={'some headers'})
         r.filter_text = "aa eq bb"
         respo = r.read()  # execute with filter
         mocked_req.get.assert_called_with('http://test.lt/test', params='$filter=aa eq bb',
                                           auth={'a': 'a'}, headers={'some headers'})
         respo = r.read()  # execute without filter
         mocked_req.get.assert_called_with('http://test.lt/test', params=None,
                                           auth={'a': 'a'}, headers={'some headers'})
示例#6
0
文件: test.py 项目: GedasB/D365BCAPI
 def test_exe_FAIL(self):
     with mock.patch('D365BCAPI.D365BCv1API.requests') as mocked_req:
         mocked_req.post.return_value.status_code = 400
         mocked_req.post.return_value.reason = 'Any error reason'  # error message
         ex = Connect('http://test.lt/test(123456789abcd)/NAV.Action', auth={'a': 'a'}, headers={'some headers'})
         respo = ex.exe()
         mocked_req.post.assert_called_with('http://test.lt/test(123456789abcd)/NAV.Action', auth={'a': 'a'},
                                            headers={'some headers'}, json=None)
         self.assertEqual(respo, [], 'insert: on error return must be blank')  # return blank if error
         self.assertEqual(ex.except_error, [400, 'Any error reason'], 'Execute: on error variable except_error '
                                                                      'must to include error code and reason')
示例#7
0
文件: test.py 项目: GedasB/D365BCAPI
 def test_modify_FAIL(self):
     with mock.patch('D365BCAPI.D365BCv1API.requests') as mocked_req:
         mocked_req.get.return_value.status_code = 200
         mocked_req.patch.return_value.status_code = 400
         mocked_req.patch.return_value.reason = 'Any error reason'  # error message
         modi = Connect('http://test.lt/test(123456789abcd)', auth={'a': 'a'}, headers={'some headers'})
         respo = modi.modify(json_body={"orderid": "123456"})
         mocked_req.patch.assert_called_with('http://test.lt/test(123456789abcd)', auth={'a': 'a'},
                                             headers={'some headers'}, json={"orderid": "123456"})
         self.assertEqual(respo, [], 'modify: on error returns blank')
         self.assertEqual(modi.except_error, [400, 'Any error reason'], 'modify: on error variable except_error '
                                                                        'must to include error code and reason')
示例#8
0
文件: test.py 项目: GedasB/D365BCAPI
 def test_delete_FAIL(self):
     with mock.patch('D365BCAPI.D365BCv1API.requests') as mocked_req:
         mocked_req.get.return_value.status_code = 200
         mocked_req.delete.return_value.status_code = 400
         mocked_req.delete.return_value.reason = 'Any error reason'  # error message
         dele = Connect('http://test.lt/test(123456789abcd)', auth={'a': 'a'}, headers={'some headers'})
         respo = dele.delete()
         mocked_req.delete.assert_called_with('http://test.lt/test(123456789abcd)', auth={'a': 'a'},
                                              headers={'some headers'})
         self.assertEqual(respo, [], 'delete: on error returns blank')
         self.assertEqual(dele.except_error, [400, 'Any error reason'], 'delete: on error variable except_error '
                                                                        'must to include error code and reason')
示例#9
0
文件: test.py 项目: GedasB/D365BCAPI
 def test_insert_FAIL(self):
     with mock.patch('D365BCAPI.D365BCv1API.requests') as mocked_req:
         #  any error
         mocked_req.post.return_value.status_code = 400
         mocked_req.post.return_value.reason = 'Any error reason'  # error message
         ins = Connect('http://test.lt/test', auth={'a': 'a'}, headers={'some headers'})
         respo = ins.insert({"orderid": "123456"})
         mocked_req.post.assert_called_with('http://test.lt/test', auth={'a': 'a'},
                                            headers={'some headers'}, json={"orderid": "123456"})
         self.assertEqual(respo, [], 'insert: on error return must be blank')  # return blank if error
         self.assertEqual(ins.except_error, [400, 'Any error reason'], 'Insert: on error variable except_error '
                                                                       'must to include error code and reason')
示例#10
0
文件: test.py 项目: GedasB/D365BCAPI
 def test_read_Fail(self):
     with mock.patch('D365BCAPI.D365BCv1API.requests') as mocked_req:
         mocked_req.get.return_value.status_code = 200
         mocked_req.get.return_value.status_code = 400  # Check if return error
         mocked_req.get.return_value.reason = 'Any error reason'  # error message
         r = Connect('http://test.lt/test', auth={'a': 'a'}, headers={'some headers'})
         respo = r.read()  # execute and receive error
         mocked_req.get.assert_called_with('http://test.lt/test', params=None,
                                           auth={'a': 'a'}, headers={'some headers'})
         self.assertEqual(respo, [], 'read: on error response must be []')  # check if reponse is empty
         self.assertEqual(r.except_error, [400, 'Any error reason'], 'read: on error variable except_error '
                                                                     'must to include error code and reason')
示例#11
0
  Few related "records creation" example 
4. Add 2 more lines to the existing order. "Add lines to existing order" example.
5. Modify description in comment line in existing order. "Modify existing line" example
6. Delete one line from existing order. "Record delete" example
7. Execute action Microsoft.NAV.shipAndInvoice on just created sales order. "Execute action" example
8. Check is invoice created and what are Total Amount and Remaining Amount in it.
"""

user = psw = "a"  # basic authentication

# customers
url_customers = "http://bs17:7048/BC/api/v1.0/customers"  # page 5471
custname = 'Cronus'  # begin of customer name

# create connection object: url, basic authentication, headers recommended by MS
customers = Connect(url_customers, (user, psw), {"Accept-Language": "en-us"})
# we can only find customer by begin of name
customers.filter_text = f"displayName ge '{custname}' and displayName le '{custname}Z'"
# filter is: where displayName is greater or equal to Cronus and less or equal CronusZ
response_list = customers.read()  # read filtered customers
if len(response_list) > 0:
    print("Read customers",
          response_list[0].get("displayName"))  # 1st customer name

if customers.except_error is not None:
    raise Exception(customers.except_error)

if len(response_list) > 0:  # customer exists
    custno = response_list[0].get(
        "number")  # if customer exists then get it No.
else:  # create customer if not found