1616import unittest
1717
1818from clusterfuzz ._internal .cron import oss_fuzz_cc_groups
19+ from clusterfuzz ._internal .datastore import data_types
1920from clusterfuzz ._internal .tests .test_libs import helpers as test_helpers
21+ from clusterfuzz ._internal .tests .test_libs import test_utils
2022
2123
24+ @test_utils .with_cloud_emulators ('datastore' )
2225class OssFuzzCcGroupsTest (unittest .TestCase ):
2326 """Tests for oss_fuzz_cc_groups."""
2427
2528 def setUp (self ):
2629 test_helpers .patch (self , [
27- 'clusterfuzz._internal.cron.project_setup.get_oss_fuzz_projects' ,
28- 'clusterfuzz._internal.cron.project_setup.ccs_from_info' ,
2930 'clusterfuzz._internal.google_cloud_utils.google_groups.get_group_id' ,
3031 'clusterfuzz._internal.google_cloud_utils.google_groups.create_google_group' ,
3132 'clusterfuzz._internal.google_cloud_utils.google_groups.get_google_group_memberships' ,
@@ -37,14 +38,12 @@ def setUp(self):
3738
3839 def test_main (self ):
3940 """Test main execution for creating groups and syncing project ccs."""
40- self .mock .get_oss_fuzz_projects .return_value = [
41- ('project1' , {
42- 'info' : 1
43- }),
44- ('project2' , {
45- 'info' : 2
46- }),
47- ]
41+ project1 = data_types .OssFuzzProject (
42+ name = 'project1' , ccs = ['member2@example.com' ])
43+ project2 = data_types .OssFuzzProject (
44+ name = 'project2' , ccs = ['member2@example.com' , 'member3@example.com' ])
45+ project1 .put ()
46+ project2 .put ()
4847
4948 # project1 group does not exist, so create it.
5049 # project2 group exists, only sync members.
@@ -55,10 +54,6 @@ def test_main(self):
5554 'member1@example.com' : 'membership1' ,
5655 'member2@example.com' : 'membership2' ,
5756 }
58- self .mock .ccs_from_info .return_value = [
59- 'member2@example.com' ,
60- 'member3@example.com' ,
61- ]
6257 self .mock .is_service_account .return_value = False
6358
6459 self .assertTrue (oss_fuzz_cc_groups .main ())
@@ -77,13 +72,14 @@ def test_main(self):
7772
7873 def test_main_exec_for_new_group (self ):
7974 """Test main execution for a newly created group."""
80- self .mock .get_oss_fuzz_projects .return_value = [('project1' , {'info' : 1 })]
75+ project1 = data_types .OssFuzzProject (
76+ name = 'project1' , ccs = ['member2@example.com' ])
77+ project1 .put ()
8178 self .mock .get_group_id .return_value = '1'
8279 self .mock .get_google_group_memberships .return_value = {
8380 'member1@gserviceaccount.com' : 'membership1'
8481 }
8582 self .mock .set_oss_fuzz_access_settings .return_value = True
86- self .mock .ccs_from_info .return_value = ['member2@example.com' ]
8783 self .mock .is_service_account .return_value = True
8884
8985 self .assertTrue (oss_fuzz_cc_groups .main ())
@@ -97,7 +93,9 @@ def test_main_exec_for_new_group(self):
9793
9894 def test_create_fail (self ):
9995 """Test group creation failure."""
100- self .mock .get_oss_fuzz_projects .return_value = [('project1' , {})]
96+ project1 = data_types .OssFuzzProject (
97+ name = 'project1' , ccs = ['member2@example.com' ])
98+ project1 .put ()
10199 self .mock .get_group_id .return_value = None
102100 self .mock .create_google_group .return_value = False
103101
@@ -106,21 +104,23 @@ def test_create_fail(self):
106104
107105 def test_get_memberships_fail (self ):
108106 """Test get memberships failure."""
109- self .mock .get_oss_fuzz_projects .return_value = [('project1' , {})]
107+ project1 = data_types .OssFuzzProject (name = 'project1' )
108+ project1 .put ()
110109 self .mock .get_group_id .return_value = 'group1_id'
111110 self .mock .get_google_group_memberships .return_value = None
112111
113112 self .assertTrue (oss_fuzz_cc_groups .main ())
114- self .mock .ccs_from_info .assert_not_called ()
113+ self .mock .add_member_to_group .assert_not_called ()
114+ self .mock .delete_google_group_membership .assert_not_called ()
115115
116116 def test_skip_sa_deletion (self ):
117117 """Test that service accounts are not deleted from group."""
118- self .mock .get_oss_fuzz_projects .return_value = [('project1' , {})]
118+ project1 = data_types .OssFuzzProject (name = 'project1' )
119+ project1 .put ()
119120 self .mock .get_group_id .return_value = 'group1_id'
120121 self .mock .get_google_group_memberships .return_value = {
121122 'sa@serviceaccount.com' : 'membership_sa' ,
122123 }
123- self .mock .ccs_from_info .return_value = []
124124 self .mock .is_service_account .return_value = True
125125
126126 self .assertTrue (oss_fuzz_cc_groups .main ())
0 commit comments