Example #1
0
 def setUp(self):
     super(TenderAuctionResourceTest, self).setUp()
     # Create tender with bids
     self.tender_data = test_tender_data.copy()
     self.tender_data['bids'] = [
         {
             "id": "4879d3f8ee2443169b5fbbc9f89fa606",
             "status": "registration",
             "date": "2014-10-28T11:44:17.946",
             "bidders": [
                 test_tender_data["procuringEntity"]
             ],
             "totalValue": {
                 "amount": 469,
                 "currency": "UAH",
                 "valueAddedTaxIncluded": True
             }
         },
         {
             "id": "4879d3f8ee2443169b5fbbc9f89fa607",
             "status": "registration",
             "date": "2014-10-28T11:44:17.947",
             "bidders": [
                 test_tender_data["procuringEntity"]
             ],
             "totalValue": {
                 "amount": 479,
                 "currency": "UAH",
                 "valueAddedTaxIncluded": True
             }
         }
     ]
     response = self.app.post_json('/tenders', {'data': self.tender_data})
     tender = response.json['data']
     self.tender_id = tender['id']
    def test_listing(self):
        response = self.app.get('/tenders')
        self.assertEqual(response.status, '200 OK')
        self.assertEqual(len(response.json['data']), 0)

        tenders = []

        for i in range(3):
            response = self.app.post_json('/tenders', {'data': test_tender_data})
            self.assertEqual(response.status, '201 Created')
            self.assertEqual(response.content_type, 'application/json')
            tenders.append(response.json['data'])

        response = self.app.get('/tenders')
        self.assertEqual(response.status, '200 OK')
        self.assertEqual(len(response.json['data']), 3)
        self.assertEqual(set(response.json['data'][0]), set([u'id', u'dateModified']))
        self.assertEqual(set([i['id'] for i in response.json['data']]), set([i['id'] for i in tenders]))
        self.assertEqual(set([i['dateModified'] for i in response.json['data']]), set([i['dateModified'] for i in tenders]))
        self.assertEqual([i['dateModified'] for i in response.json['data']], sorted([i['dateModified'] for i in tenders]))

        before = get_now().isoformat()
        response = self.app.get('/tenders?limit=2')
        self.assertEqual(response.status, '200 OK')
        self.assertEqual(len(response.json['data']), 2)
        self.assertFalse(before < response.json['next_page']['offset'])

        response = self.app.get('/tenders', params=[('opt_fields', 'status,enquiryPeriod')])
        self.assertEqual(response.status, '200 OK')
        self.assertEqual(len(response.json['data']), 3)
        self.assertEqual(set(response.json['data'][0]), set([u'id', u'dateModified', u'status', u'enquiryPeriod']))
        self.assertIn('opt_fields=status%2CenquiryPeriod', response.json['next_page']['uri'])

        response = self.app.get('/tenders?descending=1')
        self.assertEqual(response.status, '200 OK')
        self.assertEqual(response.content_type, 'application/json')
        self.assertEqual(len(response.json['data']), 3)
        self.assertEqual(set(response.json['data'][0]), set([u'id', u'dateModified']))
        self.assertEqual(set([i['id'] for i in response.json['data']]), set([i['id'] for i in tenders]))
        self.assertEqual([i['dateModified'] for i in response.json['data']], sorted([i['dateModified'] for i in tenders], reverse=True))

        test_tender_data2 = test_tender_data.copy()
        test_tender_data2['mode'] = 'test'
        response = self.app.post_json('/tenders', {'data': test_tender_data2})
        self.assertEqual(response.status, '201 Created')
        self.assertEqual(response.content_type, 'application/json')

        response = self.app.get('/tenders?mode=test')
        self.assertEqual(response.status, '200 OK')
        self.assertEqual(len(response.json['data']), 1)

        response = self.app.get('/tenders?mode=_all_')
        self.assertEqual(response.status, '200 OK')
        self.assertEqual(len(response.json['data']), 4)
Example #3
0
 def test_create_tender_generated(self):
     data = test_tender_data.copy()
     #del data['awardPeriod']
     data.update({'id': 'hash', 'doc_id': 'hash2', 'tenderID': 'hash3'})
     response = self.app.post_json('/tenders', {'data': data})
     self.assertEqual(response.status, '201 Created')
     self.assertEqual(response.content_type, 'application/json')
     tender = response.json['data']
     self.assertEqual(set(tender), set([u'id', u'dateModified', u'tenderID', u'status', u'enquiryPeriod', u'owner',
                                        u'tenderPeriod', u'minimalStep', u'items', u'value', u'procuringEntity']))
     self.assertNotEqual(data['id'], tender['id'])
     self.assertNotEqual(data['doc_id'], tender['id'])
     self.assertNotEqual(data['tenderID'], tender['tenderID'])
Example #4
0
    def test_docs_2pc(self):
        # Creating tender in draft status
        #
        data = test_tender_data.copy()
        data['status'] = 'draft'

        with open('docs/source/tutorial/tender-post-2pc.http', 'w') as self.app.file_obj:
            response = self.app.post_json(
                '/tenders?opt_pretty=1', {"data": data})
            self.assertEqual(response.status, '201 Created')

        tender = response.json['data']
        self.tender_id = tender['id']
        owner_token = response.json['access']['token']

        # switch to 'active.enquiries'

        with open('docs/source/tutorial/tender-patch-2pc.http', 'w') as self.app.file_obj:
            response = self.app.patch_json('/tenders/{}?acc_token={}'.format(tender['id'], owner_token),
                                           {'data': {"status": 'active.enquiries'}})
            self.assertEqual(response.status, '200 OK')
# -*- coding: utf-8 -*-
import os
import webtest
from datetime import datetime, timedelta
from openprocurement.api.utils import apply_data_patch
from openprocurement.api.tests.base import test_tender_data as base_data
from openprocurement.api.tests.base import BaseTenderWebTest, PrefixedRequestClass


now = datetime.now()
test_tender_data = base_data.copy()
del test_tender_data['enquiryPeriod']
del test_tender_data['tenderPeriod']
del test_tender_data['minimalStep']

test_tender_data['procurementMethodType'] = "reporting"


class BaseTenderWebTest(BaseTenderWebTest):
    initial_data = test_tender_data
    initial_status = None
    initial_bids = None
    initial_lots = None

    def setUp(self):
        self.app = webtest.TestApp(
            "config:tests.ini", relative_to=os.path.dirname(__file__))
        self.app.RequestClass = PrefixedRequestClass
        self.app.authorization = ('Basic', ('token', ''))
        self.couchdb_server = self.app.app.registry.couchdb_server
        self.db = self.app.app.registry.db
Example #6
0
# -*- coding: utf-8 -*-
import unittest
from pyramid import testing
from openprocurement.api.auth import AuthenticationPolicy
from pyramid.tests.test_authentication import TestBasicAuthAuthenticationPolicy
from openprocurement.api.tests.base import test_tender_data, test_organization, BaseWebTest, BaseTenderWebTest

test_tender_data_mode_test = test_tender_data.copy()
test_tender_data_mode_test["mode"] = "test"


class AuthTest(TestBasicAuthAuthenticationPolicy):
    def _makeOne(self, check):
        return AuthenticationPolicy('src/openprocurement/api/tests/auth.ini',
                                    'SomeRealm')

    test_authenticated_userid_utf8 = None
    test_authenticated_userid_latin1 = None

    def test_unauthenticated_userid_bearer(self):
        request = testing.DummyRequest()
        request.headers['Authorization'] = 'Bearer chrisr'
        policy = self._makeOne(None)
        self.assertEqual(policy.unauthenticated_userid(request), 'chrisr')


class AccreditationTenderTest(BaseWebTest):
    def test_create_tender_accreditation(self):
        self.app.authorization = ('Basic', ('broker1', ''))
        response = self.app.post_json('/tenders', {"data": test_tender_data})
        self.assertEqual(response.status, '201 Created')
Example #7
0
# -*- coding: utf-8 -*-
import unittest

from openprocurement.api.tests.base import test_tender_data, BaseTenderWebTest
from iso8601 import parse_date
from tzlocal import get_localzone

tender_data = test_tender_data.copy()
tender_data['auctionPeriod'] = test_tender_data["tenderPeriod"]
tender_data['bids'] = [{
    "id": "4879d3f8ee2443169b5fbbc9f89fa606",
    "status": "registration",
    "date": "2014-10-28T11:44:17.946",
    "tenderers": [test_tender_data["procuringEntity"]],
    "value": {
        "amount": 469,
        "currency": "UAH",
        "valueAddedTaxIncluded": True
    }
}, {
    "id": "4879d3f8ee2443169b5fbbc9f89fa607",
    "status": "registration",
    "date": "2014-10-28T11:44:17.947",
    "tenderers": [test_tender_data["procuringEntity"]],
    "value": {
        "amount": 479,
        "currency": "UAH",
        "valueAddedTaxIncluded": True
    }
}]
# -*- coding: utf-8 -*-
import os
import webtest
from copy import deepcopy
from datetime import datetime, timedelta
from openprocurement.api.models import SANDBOX_MODE
from openprocurement.api.utils import apply_data_patch
from openprocurement.api.tests.base import test_tender_data as base_data
from openprocurement.api.tests.base import BaseTenderWebTest as BaseBaseTenderWebTest
from openprocurement.api.tests.base import test_organization

now = datetime.now()
test_tender_data = base_data.copy()
del test_tender_data['enquiryPeriod']
del test_tender_data['tenderPeriod']
del test_tender_data['minimalStep']

test_tender_data['procurementMethodType'] = "reporting"
test_tender_data['procuringEntity']["kind"] = "general"
if SANDBOX_MODE:
    test_tender_data['procurementMethodDetails'] = 'quick, accelerator=1440'

test_tender_negotiation_data = deepcopy(test_tender_data)
test_tender_negotiation_data['procurementMethodType'] = "negotiation"
test_tender_negotiation_data['cause'] = "twiceUnsuccessful"
test_tender_negotiation_data['causeDescription'] = "chupacabra"
if SANDBOX_MODE:
    test_tender_negotiation_data[
        'procurementMethodDetails'] = 'quick, accelerator=1440'

test_tender_negotiation_data_2items = deepcopy(test_tender_negotiation_data)
Example #9
0
# -*- coding: utf-8 -*-
import os
import webtest
from datetime import datetime, timedelta
from openprocurement.api.models import get_now
from openprocurement.api.tests.base import (test_tender_data as test_tender_data_api,
                                            now,
                                            test_features_tender_data,
                                            BaseTenderWebTest,
                                            PrefixedRequestClass)

from openprocurement.api.tests.base import test_bids as base_test_bids
test_tender_data = test_tender_ua_data = test_tender_data_api.copy()
test_tender_data['procurementMethodType'] = "aboveThresholdUA"
# test_tender_data["enquiryPeriod"] = {}
del test_tender_data["enquiryPeriod"]
test_tender_data["tenderPeriod"] = {
        "endDate": (now + timedelta(days=16)).isoformat()
}
test_tender_data["items"] = [{
        "description": u"футляри до державних нагород",
        "description_en": u"Cases for state awards",
        "classification": {
            "scheme": u"CPV",
            "id": u"44617100-9",
            "description": u"Cartons"
        },
        "additionalClassifications": [
            {
                "scheme": u"ДКПП",
                "id": u"17.21.1",
# -*- coding: utf-8 -*-
import os
import webtest
from datetime import datetime, timedelta
from openprocurement.api.models import get_now
from openprocurement.api.tests.base import (test_tender_data,
                                            now,
                                            test_features_tender_data,
                                            BaseTenderWebTest,
                                            PrefixedRequestClass)


test_tender_ua_data = test_tender_data.copy()
test_tender_ua_data['procurementMethodType'] = "aboveThresholdUA"
# test_tender_ua_data["enquiryPeriod"] = {}
del test_tender_ua_data["enquiryPeriod"]
test_tender_ua_data["tenderPeriod"] = {
        "endDate": (now + timedelta(days=16)).isoformat()
}

# test_tender_ua_data["tenderPeriod"] = test_tender_ua_data["enquiryPeriod"].copy()

test_features_tender_ua_data = test_features_tender_data.copy()
test_features_tender_ua_data['procurementMethodType'] = "aboveThresholdUA"
# test_features_tender_ua_data["enquiryPeriod"] = {}
del test_features_tender_ua_data["enquiryPeriod"]
test_features_tender_ua_data["tenderPeriod"] = {
        "endDate": (now + timedelta(days=16)).isoformat()
}
# test_features_tender_ua_data["tenderPeriod"] = test_features_tender_ua_data["enquiryPeriod"].copy()