diff --git a/tests/unit/test_git_driver.py b/tests/unit/test_git_driver.py
index 9c7ebb1..1cfadf4 100644
--- a/tests/unit/test_git_driver.py
+++ b/tests/unit/test_git_driver.py
@@ -27,10 +27,10 @@
         tenant = self.sched.abide.tenants.get('tenant-one')
         # Check that we have the git source for common-config and the
         # gerrit source for the project.
-        self.assertEqual('git', tenant.config_repos[0].source.name)
-        self.assertEqual('common-config', tenant.config_repos[0].name)
-        self.assertEqual('gerrit', tenant.project_repos[0].source.name)
-        self.assertEqual('org/project', tenant.project_repos[0].name)
+        self.assertEqual('git', tenant.config_projects[0].source.name)
+        self.assertEqual('common-config', tenant.config_projects[0].name)
+        self.assertEqual('gerrit', tenant.untrusted_projects[0].source.name)
+        self.assertEqual('org/project', tenant.untrusted_projects[0].name)
 
         # The configuration for this test is accessed via the git
         # driver (in common-config), rather than the gerrit driver, so
diff --git a/tests/unit/test_model.py b/tests/unit/test_model.py
index 04b0e0a..d8480ea 100644
--- a/tests/unit/test_model.py
+++ b/tests/unit/test_model.py
@@ -42,7 +42,7 @@
         self.tenant = model.Tenant('tenant')
         self.layout = model.Layout()
         self.project = model.Project('project', self.source)
-        self.tenant.addProjectRepo(self.project)
+        self.tenant.addUntrustedProject(self.project)
         self.pipeline = model.Pipeline('gate', self.layout)
         self.layout.addPipeline(self.pipeline)
         self.queue = model.ChangeQueue(self.pipeline)
@@ -165,7 +165,7 @@
         layout.addPipeline(pipeline)
         queue = model.ChangeQueue(pipeline)
         project = model.Project('project', self.source)
-        tenant.addProjectRepo(project)
+        tenant.addUntrustedProject(project)
 
         base = configloader.JobParser.fromYaml(tenant, layout, {
             '_source_context': self.context,
@@ -432,7 +432,7 @@
     def test_job_inheritance_job_tree(self):
         tenant = model.Tenant('tenant')
         layout = model.Layout()
-        tenant.addProjectRepo(self.project)
+        tenant.addUntrustedProject(self.project)
 
         pipeline = model.Pipeline('gate', layout)
         layout.addPipeline(pipeline)
@@ -513,7 +513,7 @@
         layout.addPipeline(pipeline)
         queue = model.ChangeQueue(pipeline)
         project = model.Project('project', self.source)
-        tenant.addProjectRepo(project)
+        tenant.addUntrustedProject(project)
 
         base = configloader.JobParser.fromYaml(tenant, layout, {
             '_source_context': self.context,
@@ -594,7 +594,7 @@
         self.layout.addJob(job)
 
         project2 = model.Project('project2', self.source)
-        self.tenant.addProjectRepo(project2)
+        self.tenant.addUntrustedProject(project2)
         context2 = model.SourceContext(project2, 'master',
                                        'test', True)
 
@@ -795,7 +795,7 @@
                         connection=connection1)
 
         source1_project1 = model.Project('project1', source1)
-        tenant.addConfigRepo(source1_project1)
+        tenant.addConfigProject(source1_project1)
         d = {'project1':
              {'git1.example.com': source1_project1}}
         self.assertEqual(d, tenant.projects)
@@ -805,7 +805,7 @@
                          tenant.getProject('git1.example.com/project1'))
 
         source1_project2 = model.Project('project2', source1)
-        tenant.addProjectRepo(source1_project2)
+        tenant.addUntrustedProject(source1_project2)
         d = {'project1':
              {'git1.example.com': source1_project1},
              'project2':
@@ -822,7 +822,7 @@
                         connection=connection2)
 
         source2_project1 = model.Project('project1', source2)
-        tenant.addProjectRepo(source2_project1)
+        tenant.addUntrustedProject(source2_project1)
         d = {'project1':
              {'git1.example.com': source1_project1,
               'git2.example.com': source2_project1},
@@ -841,7 +841,7 @@
                          tenant.getProject('git2.example.com/project1'))
 
         source2_project2 = model.Project('project2', source2)
-        tenant.addConfigRepo(source2_project2)
+        tenant.addConfigProject(source2_project2)
         d = {'project1':
              {'git1.example.com': source1_project1,
               'git2.example.com': source2_project1},
@@ -867,7 +867,7 @@
                          tenant.getProject('git2.example.com/project2'))
 
         source1_project2b = model.Project('subpath/project2', source1)
-        tenant.addConfigRepo(source1_project2b)
+        tenant.addConfigProject(source1_project2b)
         d = {'project1':
              {'git1.example.com': source1_project1,
               'git2.example.com': source2_project1},
@@ -888,7 +888,7 @@
             tenant.getProject('git1.example.com/subpath/project2'))
 
         source2_project2b = model.Project('subpath/project2', source2)
-        tenant.addConfigRepo(source2_project2b)
+        tenant.addConfigProject(source2_project2b)
         d = {'project1':
              {'git1.example.com': source1_project1,
               'git2.example.com': source2_project1},
