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
<[email protected]>
+
+- 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) {