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)
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)
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)
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)
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()
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()
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(), )
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")