예제 #1
0
	def test_make_new_role_profile(self):
		frappe.delete_doc_if_exists('Role Profile', 'Test 1', force=1)
		new_role_profile = frappe.get_doc(dict(doctype='Role Profile', role_profile='Test 1')).insert()

		self.assertEqual(new_role_profile.role_profile, 'Test 1')

		# add role
		new_role_profile.append("roles", {
			"role": '_Test Role 2'
		})
		new_role_profile.save()
		self.assertEqual(new_role_profile.roles[0].role, '_Test Role 2')

		# user with a role profile
		random_user = frappe.mock("email")
		random_user_name = frappe.mock("name")

		random_user = frappe.get_doc({
			"doctype": "User",
			"email": random_user,
			"enabled": 1,
			"first_name": random_user_name,
			"new_password": "******",
			"role_profile_name": 'Test 1'
		}).insert(ignore_permissions=True, ignore_if_duplicate=True)
		self.assertListEqual([role.role for role in random_user.roles], [role.role for role in new_role_profile.roles])

		# clear roles
		new_role_profile.roles = []
		new_role_profile.save()
		self.assertEqual(new_role_profile.roles, [])

		# user roles with the role profile should also be updated
		random_user.reload()
		self.assertListEqual(random_user.roles, [])
예제 #2
0
 def setUpClass(self):
     for _ in range(10):
         doc = frappe.get_doc({
             "doctype": "ToDo",
             "description": frappe.mock("paragraph")
         }).insert()
         self.GENERATED_DOCUMENTS.append(doc.name)
예제 #3
0
 def test_create_document(self):
     # test 7: POST method on /api/resource to create doc
     data = {"description": frappe.mock("paragraph")}
     response = self.post(self.DOCTYPE, data)
     self.assertEqual(response.status_code, 200)
     docname = response.json()["data"]["name"]
     self.assertIsInstance(docname, str)
     self.GENERATED_DOCUMENTS.append(docname)
예제 #4
0
	def test_signup(self):
		import frappe.website.utils

		random_user = frappe.mock("email")
		random_user_name = frappe.mock("name")
		# disabled signup
		with patch.object(user_module, "is_signup_disabled", return_value=True):
			self.assertRaisesRegex(
				frappe.exceptions.ValidationError,
				"Sign Up is disabled",
				sign_up,
				random_user,
				random_user_name,
				"/signup",
			)

		self.assertTupleEqual(
			sign_up(random_user, random_user_name, "/welcome"),
			(1, "Please check your email for verification"),
		)
		self.assertEqual(frappe.cache().hget("redirect_after_login", random_user), "/welcome")

		# re-register
		self.assertTupleEqual(
			sign_up(random_user, random_user_name, "/welcome"), (0, "Already Registered")
		)

		# disabled user
		user = frappe.get_doc("User", random_user)
		user.enabled = 0
		user.save()

		self.assertTupleEqual(
			sign_up(random_user, random_user_name, "/welcome"), (0, "Registered but disabled")
		)

		# throttle user creation
		with patch.object(user_module.frappe.db, "get_creation_count", return_value=301):
			self.assertRaisesRegex(
				frappe.exceptions.ValidationError,
				"Throttled",
				sign_up,
				frappe.mock("email"),
				random_user_name,
				"/signup",
			)
예제 #5
0
    def setUp(self):
        # retrieve or create a User webhook for `after_insert`
        webhook_fields = {
            "webhook_doctype": "User",
            "webhook_docevent": "after_insert",
            "request_url": "https://httpbin.org/post"
        }

        if frappe.db.exists("Webhook", webhook_fields):
            self.webhook = frappe.get_doc("Webhook", webhook_fields)
        else:
            self.webhook = frappe.new_doc("Webhook")
            self.webhook.update(webhook_fields)

        # create a User document
        self.user = frappe.new_doc("User")
        self.user.first_name = frappe.mock("name")
        self.user.email = frappe.mock("email")
        self.user.save()
예제 #6
0
    def test_update_document(self):
        # test 8: PUT method on /api/resource to update doc
        generated_desc = frappe.mock("paragraph")
        data = {"description": generated_desc}
        random_doc = choice(self.GENERATED_DOCUMENTS)
        desc_before_update = frappe.db.get_value(self.DOCTYPE, random_doc,
                                                 "description")

        response = self.put(f"{self.DOCTYPE}/{random_doc}", data=data)
        self.assertEqual(response.status_code, 200)
        self.assertNotEqual(response.json()["data"]["description"],
                            desc_before_update)
        self.assertEqual(response.json()["data"]["description"],
                         generated_desc)
예제 #7
0
	def test_send_newsletter_with_attachments(self):
		newsletter = self.get_newsletter()
		newsletter.reload()
		file_attachment = frappe.get_doc({
			"doctype": "File",
			"file_name": "test1.txt",
			"attached_to_doctype": newsletter.doctype,
			"attached_to_name": newsletter.name,
			"content": frappe.mock("paragraph")
		})
		file_attachment.save()
		newsletter.send_attachments = True
		newsletter_attachments = newsletter.get_newsletter_attachments()
		self.assertEqual(len(newsletter_attachments), 1)
		self.assertEqual(newsletter_attachments[0]["fid"], file_attachment.name)
예제 #8
0
    def setUp(self):
        # retrieve or create a User webhook for `after_insert`
        webhook_fields = {
            "webhook_doctype": "User",
            "webhook_docevent": "after_insert",
            "request_url": "https://httpbin.org/post",
        }

        if frappe.db.exists("Webhook", webhook_fields):
            self.webhook = frappe.get_doc("Webhook", webhook_fields)
        else:
            self.webhook = frappe.new_doc("Webhook")
            self.webhook.update(webhook_fields)

        # create a User document
        self.user = frappe.new_doc("User")
        self.user.first_name = frappe.mock("name")
        self.user.email = frappe.mock("email")
        self.user.save()

        # Create another test user specific to this test
        self.test_user = frappe.new_doc("User")
        self.test_user.email = "*****@*****.**"
        self.test_user.first_name = "user1"
예제 #9
0
	def test_partial_restore(self):
		_now = now()
		for num in range(10):
			frappe.get_doc({
				"doctype": "ToDo",
				"date": add_to_date(_now, days=num),
				"description": frappe.mock("paragraph")
			}).insert()
		frappe.db.commit()
		todo_count = frappe.db.count("ToDo")

		# check if todos exist, create a partial backup and see if the state is the same after restore
		self.assertIsNot(todo_count, 0)
		self.execute("bench --site {site} backup --only 'ToDo'")
		db_path = fetch_latest_backups(partial=True)["database"]
		self.assertTrue("partial" in db_path)

		frappe.db.sql_ddl("DROP TABLE IF EXISTS `tabToDo`")
		frappe.db.commit()

		self.execute("bench --site {site} partial-restore {path}", {"path": db_path})
		self.assertEquals(self.returncode, 0)
		self.assertEquals(frappe.db.count("ToDo"), todo_count)