Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package google-guest-oslogin for 
openSUSE:Factory checked in at 2021-05-12 19:32:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/google-guest-oslogin (Old)
 and      /work/SRC/openSUSE:Factory/.google-guest-oslogin.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "google-guest-oslogin"

Wed May 12 19:32:53 2021 rev:7 rq:892550 version:20210429.00

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/google-guest-oslogin/google-guest-oslogin.changes    
    2021-04-01 14:19:20.332158077 +0200
+++ 
/work/SRC/openSUSE:Factory/.google-guest-oslogin.new.2988/google-guest-oslogin.changes
      2021-05-12 19:33:35.498711782 +0200
@@ -1,0 +2,11 @@
+Tue May 11 08:22:46 UTC 2021 - John Paul Adrian Glaubitz 
<adrian.glaub...@suse.com>
+
+- Update to version 20210429.00 (bsc#1185848, bsc#1185849)
+  * correct pagetoken in groupsforuser (#59)
+  * resolve self groups last (#58)
+  * support empty groups (#57)
+  * no paginating to find groups (#56)
+  * clear users vector (#55)
+  * correct usage of pagetoken (#54)
+
+-------------------------------------------------------------------

Old:
----
  google-guest-oslogin-20210316.00.tar.gz

New:
----
  google-guest-oslogin-20210429.00.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ google-guest-oslogin.spec ++++++
--- /var/tmp/diff_new_pack.3sOx7G/_old  2021-05-12 19:33:35.938710025 +0200
+++ /var/tmp/diff_new_pack.3sOx7G/_new  2021-05-12 19:33:35.942710009 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           google-guest-oslogin
-Version:        20210316.00
+Version:        20210429.00
 Release:        0
 Summary:        Google Cloud Guest OS Login
 License:        Apache-2.0

++++++ google-guest-oslogin-20210316.00.tar.gz -> 
google-guest-oslogin-20210429.00.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/guest-oslogin-20210316.00/src/cache_refresh/cache_refresh.cc 
new/guest-oslogin-20210429.00/src/cache_refresh/cache_refresh.cc
--- old/guest-oslogin-20210316.00/src/cache_refresh/cache_refresh.cc    
2021-01-22 01:05:26.000000000 +0100
+++ new/guest-oslogin-20210429.00/src/cache_refresh/cache_refresh.cc    
2021-04-29 20:18:30.000000000 +0200
@@ -148,16 +148,19 @@
       continue;
     }
     std::string name(grp.gr_name);
+    users.clear();
     if (!GetUsersForGroup(name, &users, &error_code)) {
       syslog(LOG_ERR,
              "Error getting users for group %s (error_code %d), skipping.",
              grp.gr_name, error_code);
       continue;
     }
-    cache_file << grp.gr_name << ":" << grp.gr_passwd << ":" << grp.gr_gid << 
":" << users.front();
-    users.erase(users.begin());
+    cache_file << grp.gr_name << ":" << grp.gr_passwd << ":" << grp.gr_gid << 
":";
     for (int i = 0; i < (int)users.size(); i++) {
-      cache_file << "," << users[i];
+      if (i > 0) {
+        cache_file << ",";
+      }
+      cache_file << users[i];
     }
     cache_file << "\n";
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/guest-oslogin-20210316.00/src/include/oslogin_utils.h 
new/guest-oslogin-20210429.00/src/include/oslogin_utils.h
--- old/guest-oslogin-20210316.00/src/include/oslogin_utils.h   2021-01-22 
01:05:26.000000000 +0100
+++ new/guest-oslogin-20210429.00/src/include/oslogin_utils.h   2021-04-29 
20:18:30.000000000 +0200
@@ -26,9 +26,9 @@
 #define INTERNAL_TWO_FACTOR "INTERNAL_TWO_FACTOR"
 #define IDV_PREREGISTERED_PHONE "IDV_PREREGISTERED_PHONE"
 #define SECURITY_KEY_OTP "SECURITY_KEY_OTP"
-
 #define INITGROUP_CACHE_EXPIRE_SECONDS 500
 
+
 #ifdef DEBUG
 #undef DEBUG
 #define DEBUG(fmt, ...)                                                        
\
@@ -225,9 +225,11 @@
 bool AddUsersToGroup(std::vector<string> users, struct group* result,
                        BufferManager* buf, int* errnop);
 
-// Iterates through all groups until one matching provided group is found,
-// replacing gr_name with a buffermanager provided string.
-bool FindGroup(struct group* grp, BufferManager* buf, int* errnop);
+// Gets group matching name.
+bool GetGroupByName(string name, struct group* grp, BufferManager* buf, int* 
errnop);
+
+// Gets group matching GID.
+bool GetGroupByGID(int gid, struct group* grp, BufferManager* buf, int* 
errnop);
 
 // Iterates through all users for a group, storing results in a provided 
string vector.
 bool GetUsersForGroup(string groupname, std::vector<string>* users, int* 
errnop);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/guest-oslogin-20210316.00/src/nss/nss_oslogin.cc 
new/guest-oslogin-20210429.00/src/nss/nss_oslogin.cc
--- old/guest-oslogin-20210316.00/src/nss/nss_oslogin.cc        2021-01-22 
01:05:26.000000000 +0100
+++ new/guest-oslogin-20210429.00/src/nss/nss_oslogin.cc        2021-04-29 
20:18:30.000000000 +0200
@@ -31,11 +31,14 @@
 #include <sstream>
 #include <string>
 
+#define MAXBUFSIZE 32768
+
 using std::string;
 
 using oslogin_utils::AddUsersToGroup;
 using oslogin_utils::BufferManager;
-using oslogin_utils::FindGroup;
+using oslogin_utils::GetGroupByName;
+using oslogin_utils::GetGroupByGID;
 using oslogin_utils::GetGroupsForUser;
 using oslogin_utils::GetUsersForGroup;
 using oslogin_utils::Group;
@@ -98,30 +101,40 @@
   return NSS_STATUS_SUCCESS;
 }
 
-enum nss_status _nss_oslogin_getgrby(struct group *grp, char *buf,
-                                     size_t buflen, int *errnop) {
-  // If there is no cache file, we will assume there are no groups.
-  if (access(OSLOGIN_GROUP_CACHE_PATH, R_OK) != 0)
-    return NSS_STATUS_NOTFOUND;
+// Look for OS Login user with uid matching the requested gid, and craft a
+// self-group for it.
+enum nss_status getselfgrgid(gid_t gid, struct group *grp,
+                             char *buf, size_t buflen, int *errnop) {
   BufferManager buffer_manager(buf, buflen);
-  if (!FindGroup(grp, &buffer_manager, errnop))
-    return *errnop == ERANGE ? NSS_STATUS_TRYAGAIN : NSS_STATUS_NOTFOUND;
 
-  std::vector<string> users;
-  if (!GetUsersForGroup(grp->gr_name, &users, errnop))
-    return *errnop == ERANGE ? NSS_STATUS_TRYAGAIN : NSS_STATUS_NOTFOUND;
-
-  if (!AddUsersToGroup(users, grp, &buffer_manager, errnop))
-    return *errnop == ERANGE ? NSS_STATUS_TRYAGAIN : NSS_STATUS_NOTFOUND;
+  // Look for a matching user in cache.
+  FILE *p_file = fopen(OSLOGIN_PASSWD_CACHE_PATH, "re");
+  if (p_file != NULL) {
+    struct passwd user;
+    struct passwd *userp = NULL;
+    char userbuf[MAXBUFSIZE];
+
+    while (fgetpwent_r(p_file, &user, userbuf, MAXBUFSIZE, &userp) == 0) {
+      if (user.pw_uid == gid) {
+        memset(grp, 0, sizeof(struct group));
+
+        // Copy from userbuf to user-provided buffer.
+        if (!buffer_manager.AppendString(user.pw_name, &grp->gr_name, errnop))
+          return *errnop == ERANGE ? NSS_STATUS_TRYAGAIN : NSS_STATUS_NOTFOUND;
+
+        // Add user to group.
+        std::vector<string> members;
+        members.push_back(string(user.pw_name));
+        if (!AddUsersToGroup(members, grp, &buffer_manager, errnop))
+          return *errnop == ERANGE ? NSS_STATUS_TRYAGAIN : NSS_STATUS_NOTFOUND;
 
-  return NSS_STATUS_SUCCESS;
-}
+        return NSS_STATUS_SUCCESS;
+      }
+    }
+    fclose(p_file);
+  }
 
-// look for OS Login user with uid matching the requested gid, and craft a
-// self-group for it.
-enum nss_status getselfgrgid(gid_t gid, struct group *grp,
-                                          char *buf, size_t buflen) {
-  BufferManager buffer_manager(buf, buflen);
+  // Look for matching user in backend.
   std::stringstream url;
   url << kMetadataServerUrl << "users?uid=" << gid;
   string response;
@@ -131,33 +144,59 @@
     return NSS_STATUS_NOTFOUND;
   }
   struct passwd result;
-  int errnop;
-  if (!ParseJsonToPasswd(response, &result, &buffer_manager, &errnop))
+  if (!ParseJsonToPasswd(response, &result, &buffer_manager, errnop))
     return NSS_STATUS_NOTFOUND;
 
   if (result.pw_gid != result.pw_uid)
     return NSS_STATUS_NOTFOUND;
 
   // Set the group name to the name of the matching user.
-  if (!buffer_manager.AppendString(result.pw_name, &grp->gr_name, &errnop))
-    return NSS_STATUS_NOTFOUND;
+  if (!buffer_manager.AppendString(result.pw_name, &grp->gr_name, errnop))
+    return *errnop == ERANGE ? NSS_STATUS_TRYAGAIN : NSS_STATUS_NOTFOUND;
 
   grp->gr_gid = result.pw_uid;
 
   // Create a list of only the matching user and add to members list.
   std::vector<string> members;
   members.push_back(string(result.pw_name));
-  if (!AddUsersToGroup(members, grp, &buffer_manager, &errnop))
-    return NSS_STATUS_NOTFOUND;
+  if (!AddUsersToGroup(members, grp, &buffer_manager, errnop))
+    return *errnop == ERANGE ? NSS_STATUS_TRYAGAIN : NSS_STATUS_NOTFOUND;
 
   return NSS_STATUS_SUCCESS;
 }
 
-// look for OS Login user with name matching the requested name, and craft a
+// Look for OS Login user with name matching the requested name, and craft a
 // self-group for it.
 enum nss_status getselfgrnam(const char* name, struct group *grp,
-                                          char *buf, size_t buflen) {
+                             char *buf, size_t buflen, int *errnop) {
   BufferManager buffer_manager(buf, buflen);
+
+  // Look for a matching user in cache.
+  FILE *p_file = fopen(OSLOGIN_PASSWD_CACHE_PATH, "re");
+  if (p_file != NULL) {
+    struct passwd user;
+    struct passwd *userp = NULL;
+    char userbuf[MAXBUFSIZE];
+
+    while (fgetpwent_r(p_file, &user, userbuf, MAXBUFSIZE, &userp) == 0) {
+      if (strcmp(user.pw_name, name) == 0) {
+        memset(grp, 0, sizeof(struct group));
+
+        grp->gr_gid = user.pw_uid;
+
+        // Add user to group.
+        std::vector<string> members;
+        members.push_back(string(name));
+        if (!AddUsersToGroup(members, grp, &buffer_manager, errnop))
+          return *errnop == ERANGE ? NSS_STATUS_TRYAGAIN : NSS_STATUS_NOTFOUND;
+
+        return NSS_STATUS_SUCCESS;
+      }
+    }
+    fclose(p_file);
+  }
+
+  // Look for matching user in backend.
   std::stringstream url;
   url << kMetadataServerUrl << "users?username=" << UrlEncode(string(name));
   string response;
@@ -167,24 +206,23 @@
     return NSS_STATUS_NOTFOUND;
   }
   struct passwd result;
-  int errnop;
-  if (!ParseJsonToPasswd(response, &result, &buffer_manager, &errnop))
+  if (!ParseJsonToPasswd(response, &result, &buffer_manager, errnop))
     return NSS_STATUS_NOTFOUND;
 
   if (result.pw_gid != result.pw_uid)
     return NSS_STATUS_NOTFOUND;
 
   // Set the group name to the name of the matching user.
-  if (!buffer_manager.AppendString(result.pw_name, &grp->gr_name, &errnop))
-    return NSS_STATUS_NOTFOUND;
+  if (!buffer_manager.AppendString(result.pw_name, &grp->gr_name, errnop))
+    return *errnop == ERANGE ? NSS_STATUS_TRYAGAIN : NSS_STATUS_NOTFOUND;
 
   grp->gr_gid = result.pw_uid;
 
   // Create a list of only the matching user and add to members list.
   std::vector<string> members;
   members.push_back(string(result.pw_name));
-  if (!AddUsersToGroup(members, grp, &buffer_manager, &errnop))
-    return NSS_STATUS_NOTFOUND;
+  if (!AddUsersToGroup(members, grp, &buffer_manager, errnop))
+    return *errnop == ERANGE ? NSS_STATUS_TRYAGAIN : NSS_STATUS_NOTFOUND;
 
   return NSS_STATUS_SUCCESS;
 }
@@ -194,11 +232,27 @@
 
 enum nss_status _nss_oslogin_getgrgid_r(gid_t gid, struct group *grp, char 
*buf,
                                         size_t buflen, int *errnop) {
+  // If there is no cache file, we will assume there are no groups.
+  if (access(OSLOGIN_GROUP_CACHE_PATH, R_OK) != 0)
+    return getselfgrgid(gid, grp, buf, buflen, errnop);
+
   memset(grp, 0, sizeof(struct group));
-  if (getselfgrgid(gid, grp, buf, buflen) == NSS_STATUS_SUCCESS)
-      return NSS_STATUS_SUCCESS;
-  grp->gr_gid = gid;
-  return _nss_oslogin_getgrby(grp, buf, buflen, errnop);
+  BufferManager buffer_manager(buf, buflen);
+  if (!GetGroupByGID(gid, grp, &buffer_manager, errnop)) {
+    if (*errnop == ERANGE) {
+      return NSS_STATUS_TRYAGAIN;
+    }
+    return getselfgrgid(gid, grp, buf, buflen, errnop);
+  }
+
+  std::vector<string> users;
+  if (!GetUsersForGroup(grp->gr_name, &users, errnop))
+    return *errnop == ERANGE ? NSS_STATUS_TRYAGAIN : NSS_STATUS_NOTFOUND;
+
+  if (!users.empty() && !AddUsersToGroup(users, grp, &buffer_manager, errnop))
+    return *errnop == ERANGE ? NSS_STATUS_TRYAGAIN : NSS_STATUS_NOTFOUND;
+
+  return NSS_STATUS_SUCCESS;
 }
 
 // _nss_oslogin_getgrnam_r()
@@ -206,11 +260,27 @@
 
 enum nss_status _nss_oslogin_getgrnam_r(const char *name, struct group *grp,
                                         char *buf, size_t buflen, int *errnop) 
{
+  // If there is no cache file, we will assume there are no groups.
+  if (access(OSLOGIN_GROUP_CACHE_PATH, R_OK) != 0)
+    return getselfgrnam(name, grp, buf, buflen, errnop);
+
   memset(grp, 0, sizeof(struct group));
-  if (getselfgrnam(name, grp, buf, buflen) == NSS_STATUS_SUCCESS)
-      return NSS_STATUS_SUCCESS;
-  grp->gr_name = (char *)name;
-  return _nss_oslogin_getgrby(grp, buf, buflen, errnop);
+  BufferManager buffer_manager(buf, buflen);
+  if (!GetGroupByName(string(name), grp, &buffer_manager, errnop)) {
+    if (*errnop == ERANGE) {
+           return NSS_STATUS_TRYAGAIN;
+    }
+    return getselfgrnam(name, grp, buf, buflen, errnop);
+  }
+
+  std::vector<string> users;
+  if (!GetUsersForGroup(grp->gr_name, &users, errnop))
+    return *errnop == ERANGE ? NSS_STATUS_TRYAGAIN : NSS_STATUS_NOTFOUND;
+
+  if (!users.empty() && !AddUsersToGroup(users, grp, &buffer_manager, errnop))
+    return *errnop == ERANGE ? NSS_STATUS_TRYAGAIN : NSS_STATUS_NOTFOUND;
+
+  return NSS_STATUS_SUCCESS;
 }
 
 // _nss_cache_oslogin_initgroups_dyn()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/guest-oslogin-20210316.00/src/oslogin_utils.cc 
new/guest-oslogin-20210429.00/src/oslogin_utils.cc
--- old/guest-oslogin-20210316.00/src/oslogin_utils.cc  2021-01-22 
01:05:26.000000000 +0100
+++ new/guest-oslogin-20210429.00/src/oslogin_utils.cc  2021-04-29 
20:18:30.000000000 +0200
@@ -20,6 +20,7 @@
 #include <grp.h>
 #include <nss.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <time.h>
 
 #include <cstring>
@@ -413,7 +414,7 @@
 
   json_object* users = NULL;
   if (!json_object_object_get_ex(root, "usernames", &users)) {
-    return false;
+    return true;
   }
   if (json_object_get_type(users) != json_type_array) {
     return false;
@@ -455,6 +456,7 @@
 
     Group g;
     g.gid = json_object_get_int64(gid);
+
     // get_int64 will confusingly return 0 if the string can't be converted to
     // an integer. We can't rely on type check as it may be a string in the 
API.
     if (g.gid == 0) {
@@ -781,25 +783,32 @@
 
 // ----------------- OS Login functions -----------------
 
-// TODO: this function reads all groups comparing names or gids; it should be
-// replaced by groups?groupname= lookup when this is available.
-bool FindGroup(struct group* result, BufferManager* buf, int* errnop) {
-  if (result->gr_name == NULL && result->gr_gid == 0) {
-    // Nobody told me what to find.
+
+bool GetGroupsForUser(string username, std::vector<Group>* groups, int* 
errnop) {
+  string response;
+  if (!(GetUser(username, &response))) {
+    DEBUG("GetGroupsForUser: !GetUser\n");
+    *errnop = ENOENT;
+    return false;
+  }
+
+  string email;
+  if (!ParseJsonToEmail(response, &email) || email.empty()) {
+    DEBUG("GetGroupsForUser: !ParseJsonToEmail\n");
+    *errnop = ENOENT;
     return false;
   }
+
   std::stringstream url;
-  std::vector<Group> groups;
 
-  string response;
   long http_code;
-  string pageToken = "";
+  string pageToken ("");
 
   do {
     url.str("");
-    url << kMetadataServerUrl << "groups";
+    url << kMetadataServerUrl << "groups?email=" << email;
     if (pageToken != "")
-      url << "?pageToken=" << pageToken;
+      url << "&pagetoken=" << pageToken;
 
     response.clear();
     http_code = 0;
@@ -810,97 +819,95 @@
     }
 
     if (!ParseJsonToKey(response, "nextPageToken", &pageToken)) {
-      pageToken = "";
-    }
-
-    groups.clear();
-    if (!ParseJsonToGroups(response, &groups) || groups.empty()) {
       *errnop = ENOENT;
       return false;
     }
 
-    // Check for a match.
-    for (int i = 0; i < (int) groups.size(); i++) {
-      Group el = groups[i];
-      if ((result->gr_name != NULL) && (string(result->gr_name) == el.name)) {
-        // Set the name even though it matches because the final string must
-        // be stored in the provided buffer.
-        if (!buf->AppendString(el.name, &result->gr_name, errnop)) {
-          return false;
-        }
-        result->gr_gid = el.gid;
-        return true;
-      }
-      if ((result->gr_gid != 0) && (result->gr_gid == el.gid)) {
-        if (!buf->AppendString(el.name, &result->gr_name, errnop)) {
-          return false;
-        }
-        return true;
-      }
+    if (!ParseJsonToGroups(response, groups)) {
+      *errnop = ENOENT;
+      return false;
     }
   } while (pageToken != "0");
-  // Not found.
-  *errnop = ENOENT;
-  return false;
+  return true;
 }
 
-bool GetGroupsForUser(string username, std::vector<Group>* groups, int* 
errnop) {
+bool GetGroupByName(string name, struct group* result, BufferManager* buf, 
int* errnop) {
+  std::stringstream url;
+  std::vector<Group> groups;
+
   string response;
-  if (!(GetUser(username, &response))) {
-    DEBUG("GetGroupsForUser: !GetUser\n");
-    *errnop = ENOENT;
+  long http_code;
+
+  url.str("");
+  url << kMetadataServerUrl << "groups?groupname=" << name;
+
+  response.clear();
+  http_code = 0;
+  if (!HttpGet(url.str(), &response, &http_code) || http_code != 200 ||
+      response.empty()) {
+    *errnop = EAGAIN;
     return false;
   }
 
-  string email;
-  if (!ParseJsonToEmail(response, &email) || email.empty()) {
-    DEBUG("GetGroupsForUser: !ParseJsonToEmail\n");
+  groups.clear();
+  if (!ParseJsonToGroups(response, &groups) || groups.empty() || groups.size() 
!= 1) {
     *errnop = ENOENT;
     return false;
   }
 
+  Group el = groups[0];
+  result->gr_gid = el.gid;
+  if (!buf->AppendString(el.name, &result->gr_name, errnop)) {
+    return false;
+  }
+
+  return true;
+}
+
+bool GetGroupByGID(int gid, struct group* result, BufferManager* buf, int* 
errnop) {
   std::stringstream url;
+  std::vector<Group> groups;
 
+  string response;
   long http_code;
-  string pageToken = "";
 
-  do {
-    url.str("");
-    url << kMetadataServerUrl << "groups?email=" << email;
-    if (pageToken != "")
-      url << "?pageToken=" << pageToken;
+  url.str("");
+  url << kMetadataServerUrl << "groups?gid=" << gid;
 
-    response.clear();
-    http_code = 0;
-    if (!HttpGet(url.str(), &response, &http_code) || http_code != 200 ||
-        response.empty()) {
-      *errnop = EAGAIN;
-      return false;
-    }
+  response.clear();
+  http_code = 0;
+  if (!HttpGet(url.str(), &response, &http_code) || http_code != 200 ||
+      response.empty()) {
+    *errnop = EAGAIN;
+    return false;
+  }
 
-    if (!ParseJsonToKey(response, "pageToken", &pageToken)) {
-      pageToken = "";
-    }
+  groups.clear();
+  if (!ParseJsonToGroups(response, &groups) || groups.empty() || groups.size() 
!= 1) {
+    *errnop = ENOENT;
+    return false;
+  }
+
+  Group el = groups[0];
+  result->gr_gid = el.gid;
+  if (!buf->AppendString(el.name, &result->gr_name, errnop)) {
+    return false;
+  }
 
-    if (!ParseJsonToGroups(response, groups)) {
-      *errnop = ENOENT;
-      return false;
-    }
-  } while (pageToken != "");
   return true;
 }
 
 bool GetUsersForGroup(string groupname, std::vector<string>* users, int* 
errnop) {
   string response;
   long http_code;
-  string pageToken = "";
+  string pageToken ("");
   std::stringstream url;
 
   do {
     url.str("");
     url << kMetadataServerUrl << "users?groupname=" << groupname;
     if (pageToken != "")
-      url << "?pageToken=" << pageToken;
+      url << "&pagetoken=" << pageToken;
 
     response.clear();
     http_code = 0;
@@ -910,10 +917,10 @@
       return false;
     }
     if (!ParseJsonToKey(response, "nextPageToken", &pageToken)) {
-      pageToken = "";
+      *errnop = EINVAL;
+      return false;
     }
     if (!ParseJsonToUsers(response, users)) {
-    // TODO: what if there are no users? add a test.
       *errnop = EINVAL;
       return false;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/guest-oslogin-20210316.00/test/Makefile 
new/guest-oslogin-20210429.00/test/Makefile
--- old/guest-oslogin-20210316.00/test/Makefile 2021-01-22 01:05:26.000000000 
+0100
+++ new/guest-oslogin-20210429.00/test/Makefile 2021-04-29 20:18:30.000000000 
+0200
@@ -28,13 +28,13 @@
        $(NEW_TEST_RUNNER) ${GTESTARGS}
 
 non_network_tests : test_runner new_test_runner
-       $(TEST_RUNNER) --gtest_filter=*-FindGroupTest.*:GetUsersForGroupTest.*
+       $(TEST_RUNNER) --gtest_filter=*-GetGroupByTest.*:GetUsersForGroupTest.*
        $(NEW_TEST_RUNNER) --gtest_filter=ParserTest.*
 
 network_tests : test_runner ping reset
-       $(TEST_RUNNER) --gtest_filter=FindGroupTest.*:GetUsersForGroupTest.*
+       $(TEST_RUNNER) --gtest_filter=GetGroupByTest.*:GetUsersForGroupTest.*
 
-# run as $ make tests GTESTARGS="--gtest_filter=FindGroupTest.*"
+# run as $ make tests GTESTARGS="--gtest_filter=GetGroupByTest.*"
 alltests : test_runner
        $(TEST_RUNNER) ${GTESTARGS}
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/guest-oslogin-20210316.00/test/oslogin_utils_test.cc 
new/guest-oslogin-20210429.00/test/oslogin_utils_test.cc
--- old/guest-oslogin-20210316.00/test/oslogin_utils_test.cc    2021-01-22 
01:05:26.000000000 +0100
+++ new/guest-oslogin-20210429.00/test/oslogin_utils_test.cc    2021-04-29 
20:18:30.000000000 +0200
@@ -406,23 +406,13 @@
 
 // Test parsing a valid JSON response from the metadata server.
 TEST(ParseJsonToUsersTest, ParseJsonToUsersEmptyGroupSucceeds) {
-  string test_group_users = "{\"usernames\":[]}";
+  string test_group_users = "{\"nextPageToken\":\"0\"}";
 
   std::vector<string> users;
   ASSERT_TRUE(ParseJsonToUsers(test_group_users, &users));
   ASSERT_TRUE(users.empty());
 }
 
-// Test parsing malformed JSON responses.
-TEST(ParseJsonToUsersTest, ParseJsonToUsersFails) {
-  string test_group_users =
-      "{\"badstuff\":[\"user0001\",\"user0002\",\"user0003\",\"user0004\","
-      "\"user0005\"]}";
-
-  std::vector<string> users;
-  ASSERT_FALSE(ParseJsonToUsers(test_group_users, &users));
-}
-
 TEST(GetUsersForGroupTest, GetUsersForGroupSucceeds) {
   string response;
   long http_code;
@@ -437,10 +427,11 @@
   ASSERT_EQ(errnop, 0);
 }
 
-TEST(FindGroupTest, FindGroupByGidSucceeds) {
+TEST(GetGroupByTest, GetGroupByNameSucceeds) {
   string response;
   long http_code;
   ASSERT_TRUE(HttpGet("http://metadata.google.internal/reset";, &response, 
&http_code));
+  ASSERT_EQ(http_code, 200);
 
   size_t buflen = 200 * sizeof(char);
   char* buffer = (char*)malloc(buflen);
@@ -449,12 +440,11 @@
   int errnop = 0;
 
   struct group grp = {};
-  grp.gr_gid = 123452;
-  ASSERT_TRUE(FindGroup(&grp, &buf, &errnop));
+  ASSERT_TRUE(GetGroupByName("demo", &grp, &buf, &errnop));
   ASSERT_EQ(errnop, 0);
 }
 
-TEST(FindGroupTest, FindGroupByNameSucceeds) {
+TEST(GetGroupByTest, GetGroupByGIDSucceeds) {
   string response;
   long http_code;
   ASSERT_TRUE(HttpGet("http://metadata.google.internal/reset";, &response, 
&http_code));
@@ -463,12 +453,11 @@
   char* buffer = (char*)malloc(buflen);
   ASSERT_STRNE(buffer, NULL);
   BufferManager buf(buffer, buflen);
-  int errnop;
+  int errnop = 0;
 
-  const char* match = "demo";
   struct group grp = {};
-  grp.gr_name = (char*)match;
-  ASSERT_TRUE(FindGroup(&grp, &buf, &errnop));
+  ASSERT_TRUE(GetGroupByGID(123452, &grp, &buf, &errnop));
+  ASSERT_EQ(errnop, 0);
 }
 
 TEST(ParseJsonEmailTest, SuccessfullyParsesEmail) {

Reply via email to