Created
August 13, 2014 10:07
-
-
Save nathando/4589cda7c6f8f91dda13 to your computer and use it in GitHub Desktop.
Test for ERPNext API
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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