@@ -34,6 +34,67 @@ def test_ctor(self):
3434 self .assertTrue (client .connection .credentials is creds )
3535 self .assertTrue (client .connection .http is http )
3636
37+ def test_list_projects_defaults (self ):
38+ from google .cloud .bigquery .client import Project
39+ PROJECT_1 = 'PROJECT_ONE'
40+ PROJECT_2 = 'PROJECT_TWO'
41+ PATH = 'projects'
42+ TOKEN = 'TOKEN'
43+ DATA = {
44+ 'nextPageToken' : TOKEN ,
45+ 'projects' : [
46+ {'kind' : 'bigquery#project' ,
47+ 'id' : PROJECT_1 ,
48+ 'numericId' : 1 ,
49+ 'projectReference' : {'projectId' : PROJECT_1 },
50+ 'friendlyName' : 'One' },
51+ {'kind' : 'bigquery#project' ,
52+ 'id' : PROJECT_2 ,
53+ 'numericId' : 2 ,
54+ 'projectReference' : {'projectId' : PROJECT_2 },
55+ 'friendlyName' : 'Two' },
56+ ]
57+ }
58+ creds = _Credentials ()
59+ client = self ._makeOne (PROJECT_1 , creds )
60+ conn = client .connection = _Connection (DATA )
61+
62+ projects , token = client .list_projects ()
63+
64+ self .assertEqual (len (projects ), len (DATA ['projects' ]))
65+ for found , expected in zip (projects , DATA ['projects' ]):
66+ self .assertTrue (isinstance (found , Project ))
67+ self .assertEqual (found .project_id , expected ['id' ])
68+ self .assertEqual (found .numeric_id , expected ['numericId' ])
69+ self .assertEqual (found .friendly_name , expected ['friendlyName' ])
70+ self .assertEqual (token , TOKEN )
71+
72+ self .assertEqual (len (conn ._requested ), 1 )
73+ req = conn ._requested [0 ]
74+ self .assertEqual (req ['method' ], 'GET' )
75+ self .assertEqual (req ['path' ], '/%s' % PATH )
76+
77+ def test_list_projects_explicit_response_missing_projects_key (self ):
78+ PROJECT = 'PROJECT'
79+ PATH = 'projects'
80+ TOKEN = 'TOKEN'
81+ DATA = {}
82+ creds = _Credentials ()
83+ client = self ._makeOne (PROJECT , creds )
84+ conn = client .connection = _Connection (DATA )
85+
86+ projects , token = client .list_projects (max_results = 3 , page_token = TOKEN )
87+
88+ self .assertEqual (len (projects ), 0 )
89+ self .assertEqual (token , None )
90+
91+ self .assertEqual (len (conn ._requested ), 1 )
92+ req = conn ._requested [0 ]
93+ self .assertEqual (req ['method' ], 'GET' )
94+ self .assertEqual (req ['path' ], '/%s' % PATH )
95+ self .assertEqual (req ['query_params' ],
96+ {'maxResults' : 3 , 'pageToken' : TOKEN })
97+
3798 def test_list_datasets_defaults (self ):
3899 from google .cloud .bigquery .dataset import Dataset
39100 PROJECT = 'PROJECT'
0 commit comments