mirror of https://github.com/GOSTSec/gostweb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
4.1 KiB
111 lines
4.1 KiB
7 years ago
|
from django.test import TestCase, RequestFactory, Client
|
||
|
from django.urls import reverse_lazy, reverse
|
||
|
from django.contrib.sessions.backends.db import SessionStore
|
||
|
from unittest.mock import MagicMock
|
||
|
|
||
|
from django.contrib.auth.models import User
|
||
|
from decimal import Decimal
|
||
|
from wallet.models import Account, Address
|
||
|
|
||
|
import wallet.views as wv
|
||
|
|
||
|
from wallet.tests.fake_data import DEMO_TRANSACTIONS, DEMO_UNSPENT, DEMO_DATA_1
|
||
|
|
||
|
class SendCoinsFormTests(TestCase):
|
||
|
|
||
|
def setUp(self):
|
||
|
self.user = User.objects.create_user("tester", password="asdasdasd")
|
||
|
account = Account.objects.create(user=self.user,
|
||
|
name="A2aac03D5F5Adae0")
|
||
|
Address.objects.create(account=account,
|
||
|
address="GPem1MVc49r7dxsUDL4sKFvq79rCtqs5Sx", used=False)
|
||
|
self.factory = RequestFactory()
|
||
|
|
||
|
def test_view_wallet(self):
|
||
|
wv.conn = MagicMock()
|
||
|
wv.conn.getnewaddress.return_value = "GPem1MVc49r7dxsUDL4sKFvq79rCtqs5Sx"
|
||
|
self.user.account.balance = Decimal("0.998")
|
||
|
self.user.account.save()
|
||
|
request = self.factory.get("/")
|
||
|
request.user, request.session = self.user, SessionStore()
|
||
|
resp = wv.index(request)
|
||
|
self.assertEqual(resp.status_code, 200)
|
||
|
|
||
|
def test_send_coins_not_enough_on_balance(self):
|
||
|
wv.conn = MagicMock()
|
||
|
wv.conn.getnewaddress.return_value = "GPem1MVc49r7dxsUDL4sKFvq79rCtqs5Sx"
|
||
|
self.user.account.balance = Decimal("1")
|
||
|
self.user.account.save()
|
||
|
request = self.factory.post("/")
|
||
|
request.user, request.session = self.user, SessionStore()
|
||
|
request.POST = {"recipient": "GPem1MVc49r7dxsUDL4sKFvq79rCtqs5Sx",
|
||
|
"amount": "999"}
|
||
|
|
||
|
resp = wv.index(request)
|
||
|
self.assertIn("Not enough", str(resp.content))
|
||
|
|
||
|
def test_send_coins_locally(self):
|
||
|
wv.conn = MagicMock()
|
||
|
wv.conn.getnewaddress.return_value = "GPem1MVc49r7dxsUDL4sKFvq79rCtqs5Sx"
|
||
|
wv.messages = MagicMock()
|
||
|
|
||
|
user2 = User.objects.create_user("second", password="asdasdasd")
|
||
|
Account.objects.create(user=user2, name="B1bbd03D5F5Adae0")
|
||
|
|
||
|
self.user.account.balance = Decimal("10")
|
||
|
self.user.account.save()
|
||
|
|
||
|
request = self.factory.post("/")
|
||
|
request.user, request.session = self.user, SessionStore()
|
||
|
request.POST = {"recipient": user2.account.name,
|
||
|
"amount": "1"}
|
||
|
|
||
|
resp = wv.index(request)
|
||
|
|
||
|
user2.account.refresh_from_db()
|
||
|
self.user.account.refresh_from_db()
|
||
|
self.assertEqual(user2.account.balance, 1)
|
||
|
self.assertEqual(self.user.account.balance, 9)
|
||
|
|
||
|
def test_send_coins_locally_not_enough(self):
|
||
|
wv.conn = MagicMock()
|
||
|
wv.conn.getnewaddress.return_value = "GPem1MVc49r7dxsUDL4sKFvq79rCtqs5Sx"
|
||
|
wv.messages = MagicMock()
|
||
|
|
||
|
user2 = User.objects.create_user("second", password="asdasdasd")
|
||
|
Account.objects.create(user=user2, name="B1bbd03D5F5Adae0")
|
||
|
|
||
|
self.user.account.balance = Decimal("10")
|
||
|
self.user.account.save()
|
||
|
|
||
|
request = self.factory.post("/")
|
||
|
request.user, request.session = self.user, SessionStore()
|
||
|
request.POST = {"recipient": user2.account.name,
|
||
|
"amount": "100"}
|
||
|
|
||
|
resp = wv.index(request)
|
||
|
self.assertIn("Not enough", str(resp.content))
|
||
|
|
||
|
|
||
|
|
||
|
def test_send_coins_to_address(self):
|
||
|
wv.conn = MagicMock()
|
||
|
wv.conn.getnewaddress.return_value = "GPem1MVc49r7dxsUDL4sKFvq79rCtqs5Sx"
|
||
|
wv.conn.listunspent.return_value = DEMO_UNSPENT
|
||
|
wv.conn.listunspent.return_value = DEMO_DATA_1["listunspent"]
|
||
|
wv.conn.sendrawtransaction.return_value = "71ea479aca93b1fb6f44b2081c711b54b1261711462ab6b7121b39763b19f328"
|
||
|
wv.messages = MagicMock()
|
||
|
|
||
|
self.user.account.balance = Decimal("10")
|
||
|
self.user.account.save()
|
||
|
request = self.factory.post("/")
|
||
|
request.user, request.session = self.user, SessionStore()
|
||
|
request.POST = {"recipient": "GPem1MVc49r7dxsUDL4sKFvq79rCtqs5Sx",
|
||
|
"amount": "1"}
|
||
|
|
||
|
resp = wv.index(request)
|
||
|
self.assertIs(resp.status_code, 200)
|
||
|
self.assertTrue(wv.messages.success.called)
|
||
|
|
||
|
|