def users(self, app):
     with app.app_context():
         db.session.add(
             User(id=1,
                  name='User 1',
                  password='******',
                  email_address='*****@*****.**',
                  active=True,
                  role='supplier',
                  supplier_code=1,
                  password_changed_at=utcnow()))
         db.session.add(
             User(id=2,
                  name='User 2',
                  password='******',
                  email_address='*****@*****.**',
                  active=True,
                  role='supplier',
                  supplier_code=1,
                  password_changed_at=utcnow()))
         db.session.add(
             User(id=3,
                  name='User 3',
                  password='******',
                  email_address='*****@*****.**',
                  active=False,
                  role='supplier',
                  supplier_code=1,
                  password_changed_at=utcnow()))
         yield db.session.query(User).all()
    def setup_dummy_brief(
        self, id=None, user_id=1, status=None, data=None, published_at=None, withdrawn_at=None,
        framework_slug="digital-outcomes-and-specialists", lot_slug="digital-specialists"
    ):
        if published_at is not None and status is not None:
            raise ValueError("Cannot provide both status and published_at")
        if withdrawn_at is not None and published_at is None:
            raise ValueError("If setting withdrawn_at then published_at must also be set")
        if not published_at:
            if status == 'closed':
                published_at = utcnow() - timedelta(days=1000)
            elif status == 'withdrawn':
                published_at = utcnow() - timedelta(days=1000)
                withdrawn_at = utcnow()
            else:
                published_at = None if status == 'draft' else utcnow()
        framework = Framework.query.filter(Framework.slug == framework_slug).first()
        lot = Lot.query.filter(Lot.slug == lot_slug).first()

        db.session.add(Brief(
            id=id,
            data=data,
            framework=framework,
            lot=lot,
            users=[User.query.get(user_id)],
            published_at=published_at,
            withdrawn_at=withdrawn_at,
        ))
Exemple #3
0
def users(app, agencies):
    with app.app_context():
        db.session.add(
            User(id=4,
                 name='Muu Muu',
                 email_address='*****@*****.**',
                 password='******',
                 active=True,
                 password_changed_at=utcnow(),
                 role='buyer',
                 agency_id=10))

        db.session.add(
            User(id=5,
                 name='Moo Moo',
                 email_address='*****@*****.**',
                 password='******',
                 active=True,
                 password_changed_at=utcnow(),
                 role='buyer',
                 agency_id=10))

        db.session.commit()

        yield db.session.query(User).all()
def test_live_section_links_are_disabled_for_closed_specialist_brief(app, specialist_brief):
    with app.app_context():
        specialist_brief.published_at = utcnow().subtract(weeks=1)
        specialist_brief.questions_closed_at = utcnow().subtract(days=2)
        specialist_brief.closed_at = utcnow().subtract(days=1)
        links = brief_overview_service.get_live_links(specialist_brief)

        for link in links:
            assert all(not link['path'] for link in links)
Exemple #5
0
def test_live_section_links_are_disabled_for_closed_specialist_brief(current_user, app, specialist_brief):
    with app.app_context():
        specialist_brief.published_at = utcnow().subtract(weeks=1)
        specialist_brief.questions_closed_at = utcnow().subtract(days=2)
        specialist_brief.closed_at = utcnow().subtract(days=1)
        links = brief_overview_business.get_live_links(specialist_brief)

        for link in links:
            assert all(not link['path'] for link in links)
def test_work_order_section_has_start_work_order_link_for_specialist_brief(app, specialist_brief):
    with app.app_context():
        specialist_brief.published_at = utcnow().subtract(weeks=1)
        specialist_brief.questions_closed_at = utcnow().subtract(days=2)
        specialist_brief.closed_at = utcnow().subtract(days=1)

        links = brief_overview_service.get_work_order_links(specialist_brief)
        start_work_order_link = next(iter(links))

        assert start_work_order_link['path']
        assert start_work_order_link['text'] == 'Start a work order'
def test_shortlist_section_has_all_links_for_closed_specialist_brief(app,
                                                                     specialist_brief, shortlist_links):
    with app.app_context():
        specialist_brief.published_at = utcnow().subtract(weeks=1)
        specialist_brief.questions_closed_at = utcnow().subtract(days=2)
        specialist_brief.closed_at = utcnow().subtract(days=1)
        links = brief_overview_service.get_shortlist_links(specialist_brief)

        for link in links:
            assert link['path']
            assert any(link['text'] == text for text in shortlist_links)
Exemple #8
0
def test_work_order_section_has_start_work_order_link_for_specialist_brief(
        current_user, app, specialist_brief):
    with app.app_context():
        specialist_brief.published_at = utcnow().subtract(weeks=1)
        specialist_brief.questions_closed_at = utcnow().subtract(days=2)
        specialist_brief.closed_at = utcnow().subtract(days=1)

        links = brief_overview_business.get_work_order_links(specialist_brief)
        start_work_order_link = next(iter(links))

        assert start_work_order_link['path']
        assert start_work_order_link['text'] == 'Start a work order'
def briefs(app, request, users):
    params = request.param if hasattr(request, 'param') else {}
    published_at = pendulum.parse(
        params['published_at']) if 'published_at' in params else utcnow()
    published_at = None if 'unpublished' in params and params[
        'unpublished'] else published_at
    data = params[
        'data'] if 'data' in params else COMPLETE_SPECIALIST_BRIEF.copy()
    data['sellerCategory'] = params[
        'sellerCategory'] if 'sellerCategory' in params else 1
    lot_slug = params['lot_slug'] if 'lot_slug' in params else 'specialist'
    framework_slug = params[
        'framework_slug'] if 'framework_slug' in params else 'digital-marketplace'
    with app.app_context():
        for i in range(1, 6):
            db.session.add(
                Brief(id=i,
                      data=data,
                      framework=Framework.query.filter(
                          Framework.slug == framework_slug).first(),
                      lot=Lot.query.filter(Lot.slug == lot_slug).first(),
                      users=users,
                      published_at=published_at,
                      withdrawn_at=None))
            db.session.flush()

        db.session.commit()
        yield Brief.query.all()
def users(client, app):
    with app.app_context():
        db.session.add(
            User(id=1,
                 email_address='*****@*****.**',
                 name='Test',
                 password=encryption.hashpw('test'),
                 active=True,
                 role='buyer',
                 password_changed_at=utcnow(),
                 agency_id=1))

        db.session.add(
            User(id=2,
                 email_address='*****@*****.**',
                 name='Test',
                 password=encryption.hashpw('test'),
                 active=True,
                 role='buyer',
                 password_changed_at=utcnow(),
                 agency_id=2))

        db.session.add(
            User(id=3,
                 email_address='*****@*****.**',
                 name='Test User Team Lead',
                 password=encryption.hashpw('test'),
                 active=True,
                 role='buyer',
                 password_changed_at=utcnow(),
                 agency_id=1))

        db.session.add(
            User(id=4,
                 email_address='*****@*****.**',
                 name='Test User No Team',
                 password=encryption.hashpw('test'),
                 active=True,
                 role='buyer',
                 password_changed_at=utcnow(),
                 agency_id=1))

        db.session.commit()

        yield db.session.query(User).all()
    def users(self, app):
        with app.app_context():
            db.session.add(
                User(
                    id=1,
                    name='Muu Muu',
                    email_address='*****@*****.**',
                    password='******',
                    active=True,
                    password_changed_at=utcnow(),
                    role='buyer'
                )
            )

            db.session.add(
                User(
                    id=2,
                    name='Moo Moo',
                    email_address='*****@*****.**',
                    password='******',
                    active=True,
                    password_changed_at=utcnow(),
                    role='buyer'
                )
            )

            db.session.add(
                User(
                    id=3,
                    name='Myu Myu',
                    email_address='*****@*****.**',
                    password='******',
                    active=True,
                    password_changed_at=utcnow(),
                    role='buyer'
                )
            )

            db.session.commit()

            yield db.session.query(User).all()
def buyer_dashboard_users(app, request):
    with app.app_context():
        db.session.add(User(
            id=1,
            email_address='*****@*****.**',
            name=fake.name(),
            password=encryption.hashpw('testpassword'),
            active=True,
            role='buyer',
            password_changed_at=utcnow()
        ))

        db.session.add(User(
            id=2,
            email_address='*****@*****.**',
            name=fake.name(),
            password=encryption.hashpw('testpassword'),
            active=True,
            role='buyer',
            password_changed_at=utcnow()
        ))

        db.session.add(User(
            id=3,
            email_address='*****@*****.**',
            name=fake.name(),
            password=encryption.hashpw('testpassword'),
            active=True,
            role='buyer',
            password_changed_at=utcnow()
        ))

        db.session.flush()

        framework = Framework.query.filter(Framework.slug == "digital-marketplace").first()
        db.session.add(UserFramework(user_id=1, framework_id=framework.id))
        db.session.add(UserFramework(user_id=2, framework_id=framework.id))
        db.session.commit()

        yield User.query.all()
def users(app, request, agencies):
    params = request.param if hasattr(request, 'param') else {}
    user_role = params['user_role'] if 'user_role' in params else 'buyer'
    email_domain = params[
        'email_domain'] if 'email_domain' in params else 'digital.gov.au'
    framework_slug = params[
        'framework_slug'] if 'framework_slug' in params else 'digital-marketplace'
    with app.app_context():
        for i in range(1, 6):
            new_user = User(id=i,
                            email_address='{}{}@{}'.format(
                                fake.first_name(), i, email_domain).lower(),
                            name=fake.name(),
                            password=fake.password(),
                            active=True,
                            role=user_role,
                            password_changed_at=utcnow())
            if user_role == 'supplier':
                new_user.supplier_code = i
            db.session.add(new_user)
            db.session.flush()
            framework = Framework.query.filter(
                Framework.slug == framework_slug).first()
            db.session.add(UserFramework(user_id=i, framework_id=framework.id))

        if user_role == 'buyer':
            db.session.add(
                User(id=7,
                     email_address='*****@*****.**',
                     name=fake.name(),
                     password=encryption.hashpw('testpassword'),
                     active=True,
                     role='buyer',
                     password_changed_at=utcnow(),
                     agency_id=1))
            db.session.flush()
            db.session.add(UserFramework(user_id=7, framework_id=framework.id))

        db.session.commit()
        yield User.query.filter(User.role == user_role).all()
Exemple #14
0
def admin_users(app, request):
    with app.app_context():
        db.session.add(
            User(id=7,
                 email_address='*****@*****.**',
                 name=fake.name(),
                 password=encryption.hashpw('testpassword'),
                 active=True,
                 role='admin',
                 password_changed_at=utcnow()))

        db.session.commit()
        yield User.query.filter(User.role == 'admin').all()
 def users(self, app):
     with app.app_context():
         db.session.add(
             User(
                 id=1,
                 name='User 1',
                 password='******',
                 email_address='*****@*****.**',
                 active=True,
                 role='supplier',
                 supplier_code=1,
                 password_changed_at=utcnow()
             )
         )
         db.session.add(
             User(
                 id=2,
                 name='User 2',
                 password='******',
                 email_address='*****@*****.**',
                 active=True,
                 role='supplier',
                 supplier_code=1,
                 password_changed_at=utcnow()
             )
         )
         db.session.add(
             User(
                 id=3,
                 name='User 3',
                 password='******',
                 email_address='*****@*****.**',
                 active=False,
                 role='supplier',
                 supplier_code=1,
                 password_changed_at=utcnow()
             )
         )
         yield db.session.query(User).all()
def application_user(app, request, applications):
    with app.app_context():
        db.session.add(
            User(id=1,
                 email_address='*****@*****.**',
                 name=fake.name(),
                 password=fake.password(),
                 active=True,
                 role='applicant',
                 application_id=applications[0].id,
                 password_changed_at=utcnow()))
        db.session.commit()
        yield User.query.first()
def setup_dummy_user(id=123, role='buyer'):
    if User.query.get(id):
        return id
    user = User(id=id,
                email_address="test+{}@digital.gov.au".format(id),
                name="my name",
                password="******",
                active=True,
                role=role,
                password_changed_at=utcnow())
    db.session.add(user)
    db.session.commit()

    return user.id
def buyer_user(app, request):
    with app.app_context():
        user = User.query.order_by(User.id.desc()).first()
        id = user.id + 1 if user else 1
        db.session.add(
            User(id=id,
                 email_address='*****@*****.**',
                 name=fake.name(),
                 password=encryption.hashpw('test'),
                 active=True,
                 role='buyer',
                 password_changed_at=utcnow()))
        db.session.commit()
        yield User.query.get(id)
 def setup_dummy_service(self, service_id, supplier_code=1, data=None,
                         status='published', framework_id=1, lot_id=1):
     now = utcnow()
     db.session.add(Service(service_id=service_id,
                            supplier_code=supplier_code,
                            status=status,
                            data=data or {
                                'serviceName': 'Service {}'.
                                               format(service_id)
                            },
                            framework_id=framework_id,
                            lot_id=lot_id,
                            created_at=now,
                            updated_at=now))
Exemple #20
0
    def users(self, app):
        with app.app_context():
            db.session.add(
                User(id=1,
                     name='Seller',
                     email_address='*****@*****.**',
                     password='******',
                     active=True,
                     password_changed_at=utcnow(),
                     role='supplier'))

            db.session.commit()

            yield db.session.query(User).all()
    def setup_dummy_brief(self,
                          id=None,
                          user_id=1,
                          status=None,
                          data=None,
                          published_at=None,
                          withdrawn_at=None,
                          framework_slug="digital-outcomes-and-specialists",
                          lot_slug="digital-specialists"):
        if published_at is not None and status is not None:
            raise ValueError("Cannot provide both status and published_at")
        if withdrawn_at is not None and published_at is None:
            raise ValueError(
                "If setting withdrawn_at then published_at must also be set")
        if not published_at:
            if status == 'closed':
                published_at = utcnow() - timedelta(days=1000)
            elif status == 'withdrawn':
                published_at = utcnow() - timedelta(days=1000)
                withdrawn_at = utcnow()
            else:
                published_at = None if status == 'draft' else utcnow()
        framework = Framework.query.filter(
            Framework.slug == framework_slug).first()
        lot = Lot.query.filter(Lot.slug == lot_slug).first()

        db.session.add(
            Brief(
                id=id,
                data=data,
                framework=framework,
                lot=lot,
                users=[User.query.get(user_id)],
                published_at=published_at,
                withdrawn_at=withdrawn_at,
            ))
    def setup_dummy_applicant(self, id, application_id):
        with self.app.app_context():
            if User.query.get(id):
                return id
            user = User(id=id,
                        email_address="test+{}@digital.gov.au".format(id),
                        name="my name",
                        password="******",
                        active=True,
                        role='applicant',
                        password_changed_at=utcnow(),
                        application_id=application_id)
            db.session.add(user)
            db.session.commit()

            return user.id
def setup_dummy_user(id=123, role='buyer'):
    if User.query.get(id):
        return id
    user = User(
        id=id,
        email_address="test+{}@digital.gov.au".format(id),
        name="my name",
        password="******",
        active=True,
        role=role,
        password_changed_at=utcnow()
    )
    db.session.add(user)
    db.session.commit()

    return user.id
    def setup_dummy_user(self, id=123, role='buyer', supplier_code=None):
        with self.app.app_context():
            if User.query.get(id):
                return id
            user = User(id=id,
                        email_address="test+{}@digital.gov.au".format(id),
                        name="my name",
                        password="******",
                        active=True,
                        role=role,
                        supplier_code=supplier_code,
                        password_changed_at=utcnow())
            db.session.add(user)
            db.session.commit()

            return user.id
def buyer_dashboard_briefs(app, request, buyer_dashboard_users, supplier_user):
    with app.app_context():
        for user in buyer_dashboard_users:
            for status in ['draft', 'live', 'closed']:
                brief = Brief(
                    data=COMPLETE_DIGITAL_SPECIALISTS_BRIEF.copy(),
                    framework=Framework.query.filter(Framework.slug == "digital-outcomes-and-specialists").first(),
                    lot=Lot.query.filter(Lot.slug == 'digital-specialists').first(),
                    published_at=None,
                    closed_at=None,
                    questions_closed_at=None,
                    withdrawn_at=None
                )
                db.session.add(brief)
                db.session.flush()

                if status == 'live':
                    brief.published_at = utcnow()
                    brief.questions_closed_at = utcnow().add(days=1)
                    brief.closed_at = utcnow().add(days=2)
                elif status == 'closed':
                    brief.published_at = utcnow().subtract(weeks=1)
                    brief.questions_closed_at = utcnow().subtract(days=2)
                    brief.closed_at = utcnow().subtract(days=1)

                brief_user = BriefUser(
                    brief_id=brief.id,
                    user_id=user.id
                )
                db.session.add(brief_user)
                db.session.flush()

                # Link briefs with responses and work orders when they're live or closed
                if status == 'live' or status == 'closed':
                    db.session.add(BriefResponse(
                        brief_id=brief.id,
                        supplier_code=supplier_user.supplier_code,
                        data={}
                    ))

                    db.session.add(WorkOrder(
                        brief_id=brief.id,
                        supplier_code=supplier_user.supplier_code,
                        created_at=utcnow(),
                        data={}
                    ))

        db.session.commit()

        yield Brief.query.all()
def supplier_user(app, request, suppliers):
    with app.app_context():
        db.session.add(
            User(id=100,
                 email_address='*****@*****.**',
                 name=fake.name(),
                 password=encryption.hashpw('testpassword'),
                 active=True,
                 role='supplier',
                 supplier_code=suppliers[0].code,
                 password_changed_at=utcnow()))
        db.session.commit()
        db.session.flush()
        framework = Framework.query.filter(
            Framework.slug == "digital-outcomes-and-specialists").first()
        db.session.add(UserFramework(user_id=100, framework_id=framework.id))
        db.session.commit()
        yield User.query.first()
    def setup_dummy_user(self, id=123, role='buyer', supplier_code=None):
        with self.app.app_context():
            if User.query.get(id):
                return id
            user = User(
                id=id,
                email_address="test+{}@digital.gov.au".format(id),
                name="my name",
                password="******",
                active=True,
                role=role,
                supplier_code=supplier_code,
                password_changed_at=utcnow()
            )
            db.session.add(user)
            db.session.commit()

            return user.id
def supplier_user(app, request, suppliers):
    with app.app_context():
        db.session.add(User(
            id=100,
            email_address='*****@*****.**',
            name=fake.name(),
            password=encryption.hashpw('testpassword'),
            active=True,
            role='supplier',
            supplier_code=suppliers[0].code,
            password_changed_at=utcnow()
        ))
        db.session.commit()
        db.session.flush()
        framework = Framework.query.filter(Framework.slug == "digital-outcomes-and-specialists").first()
        db.session.add(UserFramework(user_id=100, framework_id=framework.id))
        db.session.commit()
        yield User.query.first()
Exemple #29
0
def supplier_user(app, request, suppliers):
    with app.app_context():
        user = User.query.order_by(User.id.desc()).first()
        id = user.id + 1 if user else 1
        db.session.add(
            User(id=id,
                 email_address='*****@*****.**',
                 name=fake.name(),
                 password=encryption.hashpw('testpassword'),
                 active=True,
                 role='supplier',
                 supplier_code=suppliers[0].code,
                 password_changed_at=utcnow()))
        db.session.commit()
        framework = Framework.query.filter(Framework.slug == "orams").first()
        db.session.add(UserFramework(user_id=id, framework_id=framework.id))
        db.session.commit()
        yield User.query.get(id)
    def setup_dummy_applicant(self, id, application_id):
        with self.app.app_context():
            if User.query.get(id):
                return id
            user = User(
                id=id,
                email_address="test+{}@digital.gov.au".format(id),
                name="my name",
                password="******",
                active=True,
                role='applicant',
                password_changed_at=utcnow(),
                application_id=application_id
            )
            db.session.add(user)
            db.session.commit()

            return user.id
 def setup_dummy_service(self,
                         service_id,
                         supplier_code=1,
                         data=None,
                         status='published',
                         framework_id=1,
                         lot_id=1):
     now = utcnow()
     db.session.add(
         Service(service_id=service_id,
                 supplier_code=supplier_code,
                 status=status,
                 data=data
                 or {'serviceName': 'Service {}'.format(service_id)},
                 framework_id=framework_id,
                 lot_id=lot_id,
                 created_at=now,
                 updated_at=now))
Exemple #32
0
def briefs(app, request, users):
    params = request.param if hasattr(request, 'param') else {}
    published_at = pendulum.parse(
        params['published_at']) if 'published_at' in params else utcnow()
    data = params[
        'data'] if 'data' in params else COMPLETE_DIGITAL_SPECIALISTS_BRIEF.copy(
        )
    with app.app_context():
        for i in range(1, 6):
            db.session.add(
                Brief(id=i,
                      data=data,
                      framework=Framework.query.filter(
                          Framework.slug ==
                          "digital-service-professionals").first(),
                      lot=Lot.query.filter(
                          Lot.slug == 'digital-professionals').first(),
                      users=users,
                      published_at=published_at,
                      withdrawn_at=None))
            db.session.flush()

        db.session.commit()
        yield Brief.query.all()