Ejemplo n.º 1
0
    def setUp(self):
        super().setUp()

        # Load modules from the fixtures directory so that we have the required
        # modules as well as a test project.
        from guidedmodules.models import AppSource
        from guidedmodules.management.commands.load_modules import Command as load_modules
        load_modules().handle()  # load system modules
        AppSource.objects.create(
            slug="fixture",
            spec={
                "type": "local",
                "path": "fixtures/modules/other",
            }
        )\
         .add_app_to_catalog("simple_project")

        # Create a default user that is a member of the organization.

        self.user_pw = get_random_string(4)
        self.user = User.objects.create(username="******")
        self.user.set_password(self.user_pw)
        self.user.save()

        # Create the Organization.

        org = Organization.create(name="Our Organization",
                                  slug="testorg",
                                  admin_user=self.user)

        # Create a Portfolio and Grant Access
        portfolio = Portfolio.objects.create(title=self.user.username)
        portfolio.assign_owner_permissions(self.user)
Ejemplo n.º 2
0
    def setUp(self):
        super().setUp()

        # Load modules from the fixtures directory so that we have the required
        # modules as well as a test project.
        from guidedmodules.models import AppSource
        from guidedmodules.management.commands.load_modules import Command as load_modules
        AppSource.objects.create(slug="fixture",
                                 spec={
                                     "type": "local",
                                     "path": "fixtures/modules/other",
                                 })
        load_modules().handle()

        # Create a default user that is a member of the organization.

        self.user_pw = get_random_string(4)
        self.user = User.objects.create(username="******")
        self.user.set_password(self.user_pw)
        self.user.save()

        # Create the Organization.

        org = Organization.create(name="Our Organization",
                                  subdomain="testorg",
                                  admin_user=self.user)
Ejemplo n.º 3
0
    def setUp(self):
        super().setUp()

        # Set screen resolution
        capabilities = {"resolution": "1920x1080"}

        # Load modules from the fixtures directory so that we have the required
        # modules as well as a test project.
        from guidedmodules.models import AppSource
        from guidedmodules.management.commands.load_modules import Command as load_modules

        AppSource.objects.all().delete()
        AppSource.objects.get_or_create(
              # this one exists on first db load because it's created by
              # migrations, but because the testing framework seems to
              # get rid of it after the first test in this class
            slug="system",
            is_system_source=True,
            defaults={
                "spec": { # required system projects
                    "type": "local",
                    "path": "fixtures/modules/system",
                }
            }
        )
        load_modules().handle()  # load system modules

        AppSource.objects.create(
            slug="project",
            spec={
                "type": "local",
                "path": "fixtures/modules/other",
            }
        )\
         .add_app_to_catalog("simple_project")

        # Create a default user that is a member of the organization.

        self.user_pw = get_random_string(4)
        self.user = User.objects.create(username="******")
        self.user.set_password(self.user_pw)
        # Grant user permission to view appsource
        self.user.user_permissions.add(
            Permission.objects.get(codename='view_appsource'))
        self.user.save()
        # Grant user permission to view appsource
        self.user.user_permissions.add(
            Permission.objects.get(codename='view_appsource'))

        # Create the Organization.

        org = Organization.create(name="Our Organization",
                                  slug="testorg",
                                  admin_user=self.user)

        # Create a Portfolio and Grant Access
        portfolio = Portfolio.objects.create(title=self.user.username)
        portfolio.assign_owner_permissions(self.user)
Ejemplo n.º 4
0
    def setUp(self):
        super().setUp()

        # Load the Q modules from the fixtures directory.
        from guidedmodules.models import AppSource
        from guidedmodules.management.commands.load_modules import Command as load_modules
        AppSource.objects.all().delete()
        AppSource.objects.get_or_create(
              # this one exists on first db load because it's created by
              # migrations, but because the testing framework seems to
              # get rid of it after the first test in this class
            slug="system",
            is_system_source=True,
            defaults={
                "spec": { # required system projects
                    "type": "local",
                    "path": "fixtures/modules/system",
                }
            }
        )
        AppSource.objects.create(
            slug="project",
            spec={ # contains a test project
                "type": "local",
                "path": "fixtures/modules/other",
            },
            trust_assets=True
        )
        load_modules().handle()

        # Create a default user that is a member of the organization.
        # Log the user into the test client, which is used for API
        # tests. The Selenium tests require a separate log in via the
        # headless browser.
        from siteapp.models import User, ProjectMembership
        self.user = User.objects.create(username="******",
                                        email="*****@*****.**")
        self.user.clear_password = get_random_string(16)
        self.user.set_password(self.user.clear_password)
        self.user.save()
        self.user.reset_api_keys()
        self.client.login(username=self.user.username,
                          password=self.user.clear_password)

        # Create the Organization.
        from siteapp.models import Organization
        self.org = Organization.create(name="Our Organization",
                                       subdomain="testorg",
                                       admin_user=self.user)

        # Grant the user permission to change the review state of answers.
        self.org.reviewers.add(self.user)
Ejemplo n.º 5
0
    def handle(self, *args, **options):
        # Fix up some settings.
        self.fixup_django_settings()

        # Start the headless browser.
        self.start_headless_browser(options['size'])
        self.mouse_speed = options["mouse_speed"]

        # Prepare for taking screenshots.
        if options['path']:
            self.init_screenshots(options)

        # Switch to the throw-away test database so no database records
        # we create in this command are persistent.
        from django.test.utils import setup_databases, teardown_databases
        dbinfo = setup_databases(True, False)

        # Initialize the database.
        from guidedmodules.management.commands.load_modules import Command as load_modules
        load_modules().handle()

        try:
            # Create a user and organization.
            self.init_user_organization(options)

            # Run a script on the headless browser, generating
            # a bunch of screenshots.
            if options['app']:
                self.screenshot_app(options)

            if options['author_new_app']:
                self.screenshot_author_new_app(options)

            # Combine images into a  PDF.
            if getattr(self, 'write_pdf_filename', None):
                self.write_pdf()
        finally:
            # Clean up the throw-away test database.
            teardown_databases(dbinfo, 1)

            # Close selenium.
            self.stop_headless_browser()
Ejemplo n.º 6
0
    def handle(self, *args, **options):
        # Fix up some settings.
        self.fixup_django_settings()

        # Start the headless browser.
        self.start_headless_browser(options['size'])

        # Prepare for taking screenshots.
        self.init_screenshots(options)

        # Switch to the throw-away database.
        from django.test.utils import setup_databases, teardown_databases
        dbinfo = setup_databases(True, False)

        # Initialize the database.
        from guidedmodules.management.commands.load_modules import Command as load_modules
        load_modules().handle()

        try:
            # Create a user and organization.
            self.init_user_organization(options)

            # Run a script on the headless browser, generating
            # a bunch of screenshots.
            if options['app']:
                self.screenshot_app(options)

            if options['author_new_app']:
                self.screenshot_author_new_app(options)

            # Combine images into a  PDF.
            if self.write_pdf_filename:
                self.write_pdf()
        finally:
            teardown_databases(dbinfo, 1)
            self.stop_headless_browser()
Ejemplo n.º 7
0
    def setUp(self):
        super().setUp()

        # Load the Q modules from the fixtures directory.
        from guidedmodules.models import AppSource
        from guidedmodules.management.commands.load_modules import Command as load_modules
        
        AppSource.objects.all().delete()
        AppSource.objects.get_or_create(
              # this one exists on first db load because it's created by
              # migrations, but because the testing framework seems to
              # get rid of it after the first test in this class 
            slug="system",
            is_system_source=True,
            defaults={
                "spec": { # required system projects
                    "type": "local",
                    "path": "fixtures/modules/system",
                }
            }
        )
        load_modules().handle() # load system modules

        AppSource.objects.create(
            slug="project",
            spec={ # contains a test project
                "type": "local",
                "path": "fixtures/modules/other",
            },
            trust_assets=True
        )\
            .add_app_to_catalog("simple_project")

        # Create a default user that is a member of the organization.
        # Log the user into the test client, which is used for API
        # tests. The Selenium tests require a separate log in via the
        # headless browser.

        self.user = User.objects.create(
            username="******",
            email="*****@*****.**",
            is_staff=True
        )
        self.user.clear_password = get_random_string(16)
        self.user.set_password(self.user.clear_password)
        self.user.save()
        self.user.reset_api_keys()
        self.client.login(username=self.user.username, password=self.user.clear_password)

        # Create a Portfolio and Grant Access
        portfolio = Portfolio.objects.create(title=self.user.username)
        portfolio.assign_owner_permissions(self.user)

        # Create the Organization.
        self.org = Organization.create(name="Our Organization", slug="testorg",
            admin_user=self.user)

        # Grant the user permission to change the review state of answers.
        self.org.reviewers.add(self.user)

        # create a second user
        self.user2 = User.objects.create(
            username="******",
            email="*****@*****.**")
        self.user2.clear_password = get_random_string(16)
        self.user2.set_password(self.user2.clear_password)
        self.user2.save()
        self.user2.reset_api_keys()
        self.client.login(username=self.user2.username, password=self.user2.clear_password)
        portfolio = Portfolio.objects.create(title=self.user2.username)
        portfolio.assign_owner_permissions(self.user2)

        # create a third user
        self.user3 = User.objects.create(
            username="******",
            email="*****@*****.**")
        self.user3.clear_password = get_random_string(16)
        self.user3.set_password(self.user3.clear_password)
        self.user3.save()
        self.user3.reset_api_keys()
        self.client.login(username=self.user3.username, password=self.user3.clear_password)
        portfolio = Portfolio.objects.create(title=self.user3.username)
        portfolio.assign_owner_permissions(self.user3)

        # Grant second user membership in the organization
        # from https://github.com/GovReady/govready-q/blob/master/siteapp/admin.py#L41
        mb, isnew = ProjectMembership.objects.get_or_create(
            user=self.user2,
            project=self.org.get_organization_project(),
            )
Ejemplo n.º 8
0
    def test_organizational_parameters_via_project(self):

        # for this test, we need a Project, System, and Organization

        # REMIND: it would be nice to refactor all this setup code so
        # it could be easily reused ...
        
        from guidedmodules.models import AppSource
        from guidedmodules.management.commands.load_modules import Command as load_modules
        
        AppSource.objects.all().delete()
        AppSource.objects.get_or_create(
            slug="system",
            is_system_source=True,
            defaults={
                "spec": { # required system projects
                    "type": "local",
                    "path": "fixtures/modules/system",
                }
            }
        )
        load_modules().handle() # load system modules

        AppSource.objects.create(
            slug="project",
            spec={ # contains a test project
                "type": "local",
                "path": "fixtures/modules/other",
            },
            trust_assets=True
        )\
            .add_app_to_catalog("simple_project")

        user = User.objects.create(
            username="******",
            email="*****@*****.**",
            is_staff=True
        )
        org = Organization.create(name="Our Organization", slug="testorg",
                                  admin_user=user)

        root_element = Element(name="My Root Element",
                               description="Description of my root element")
        root_element.save()

        system = System()
        system.root_element = root_element
        system.save()

        project = org.get_organization_project()
        project.system = system
        project.save()

        parameter_values = project.get_parameter_values(Catalogs.NIST_SP_800_53_rev4)
        self.assertEquals(parameter_values["ac-1_prm_2"], "at least every 3 years")

        # now, add an organizational setting and try again
        OrganizationalSetting.objects.create(organization=org, 
                                             catalog_key=Catalogs.NIST_SP_800_53_rev4,
                                             parameter_key="ac-1_prm_2", 
                                             value="at least every 100 years")
        
        # we should now see the organizational setting override
        parameter_values = project.get_parameter_values(Catalogs.NIST_SP_800_53_rev4)
        self.assertEquals(parameter_values["ac-1_prm_2"], "at least every 100 years")