Skip to content

Instantly share code, notes, and snippets.

@nathando
Created August 13, 2014 10:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nathando/4589cda7c6f8f91dda13 to your computer and use it in GitHub Desktop.
Save nathando/4589cda7c6f8f91dda13 to your computer and use it in GitHub Desktop.
Test for ERPNext API
import frappe
import frappe.defaults
import unittest
import bioplastics_api as api
from frappe.auth import LoginManager, HTTPRequest, CookieManager
# load test records and dependencies
test_records = frappe.get_test_records('po')
class MockRequest():
def __init__(self):
self.path = '/'
self.host = 'localhost'
self.method = 'GET'
self.cookies = {}
self.headers = {}
class TestPOAPI(unittest.TestCase):
def setUp(self):
frappe.set_user("Administrator")
frappe.local.request = MockRequest()
frappe.local.cookie_manager = CookieManager()
frappe.local.cookie_manager.init_cookies()
# Prepare data
self.doctypes_toload = ["Warehouse", "Supplier Type", "Supplier", "Item"]
self.records_inserted = {}
self.po_list = frappe.get_test_records('Purchase Order')
self.loadData()
frappe.set_user("Guest")
def loadData(self):
# Suppliers
for dt in self.doctypes_toload:
names = []
for record in frappe.get_test_records(dt):
try:
r = frappe.copy_doc(record).insert()
names.append("'"+data.get('name')+"'")
except:
pass
self.records_inserted[dt] = ','.join(names)
# PO
names = []
for test_po in self.po_list:
po = frappe.copy_doc(test_po).insert()
po.submit()
names.append("'"+po.name+"'")
self.records_inserted["Purchase Order"] = ','.join(names)
def clearData(self):
print "Clear data------", self.records_inserted
for dt in self.doctypes_toload:
if self.records_inserted.get(dt):
print """delete from `tab{0}` where name in ({1})""".format(dt, self.records_inserted.get(dt))
frappe.db.sql("""delete from `tab{0}` where `name` in ({1})""".format(dt, self.records_inserted.get(dt)))
def prepareLogin(self):
frappe.local.request.method = 'POST'
frappe.local.form_dict = {'usr':'Administrator', 'pwd': 'admin'}
frappe.local.request.path ="/"
frappe.local.login_manager = LoginManager()
def tearDown(self):
self.clearData()
frappe.set_user("Guest")
def test_login(self):
print '--- Test Login ---'
# No get
result = api.login()
self.assertEquals(result.get('status'), -1)
# Post
self.prepareLogin()
# Wrong pwd
frappe.local.form_dict = {'usr':'Administrator', 'pwd': 'admin1'}
result = api.login()
self.assertEquals(result.get('status'), -1)
print 'Logging with wrong pasword: ', str(result)
# Correct pwd
frappe.local.form_dict = {'usr':'Administrator', 'pwd': 'admin'}
result = api.login()
self.assertEquals(result.get('status'), 1)
print 'Logging with right pasword: ', str(result)
def test_list_po(self):
print '--- Test List PO ---'
result = api.list_po()
self.assertEquals(result.get('status'), -1)
print 'Access without logging in: ', str(result)
# Simple access control test
frappe.set_user("Administrator")
result = api.list_po()
self.assertEquals(result.get('status'), 1)
print 'Access after logging in: ', str(result)
# Test PO list information
result = api.list_po()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment