interna/postgres,proxydatasource: in license bypass mode, mark redistributable

When reading from the data source in license bypass mode, set modules
and packages to be redistributable. This is necessary so that the
check for showing details in the frontend,

 canShowDetails := pkg.LegacyPackage.IsRedistributable || settings.AlwaysShowDetails

will be true.

Fixes golang/go#41389

Change-Id: I625bab6a70fe572075086fdcfa401581cc97fe3a
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/254917
Trust: Jonathan Amsterdam <jba@google.com>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
TryBot-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Julie Qiu <julie@golang.org>
diff --git a/internal/postgres/details.go b/internal/postgres/details.go
index d565939..23a898c 100644
--- a/internal/postgres/details.go
+++ b/internal/postgres/details.go
@@ -108,8 +108,10 @@
 	if err := db.db.RunQuery(ctx, query, collect, modulePath, version); err != nil {
 		return nil, fmt.Errorf("DB.LegacyGetPackagesInModule(ctx, %q, %q): %w", modulePath, version, err)
 	}
-	if !db.bypassLicenseCheck {
-		for _, p := range packages {
+	for _, p := range packages {
+		if db.bypassLicenseCheck {
+			p.IsRedistributable = true
+		} else {
 			p.RemoveNonRedistributableData()
 		}
 	}
@@ -261,7 +263,9 @@
 		}
 		return nil, fmt.Errorf("row.Scan(): %v", err)
 	}
-	if !db.bypassLicenseCheck {
+	if db.bypassLicenseCheck {
+		mi.IsRedistributable = true
+	} else {
 		mi.RemoveNonRedistributableData()
 	}
 	return &mi, nil
diff --git a/internal/postgres/legacy_directory.go b/internal/postgres/legacy_directory.go
index 0d78ec4..019d8ae 100644
--- a/internal/postgres/legacy_directory.go
+++ b/internal/postgres/legacy_directory.go
@@ -133,7 +133,9 @@
 		LegacyModuleInfo: mi,
 		Packages:         packages,
 	}
-	if !db.bypassLicenseCheck {
+	if db.bypassLicenseCheck {
+		ld.IsRedistributable = true
+	} else {
 		ld.RemoveNonRedistributableData()
 	}
 	return ld, nil
diff --git a/internal/postgres/package.go b/internal/postgres/package.go
index 1318605..65c0757 100644
--- a/internal/postgres/package.go
+++ b/internal/postgres/package.go
@@ -143,7 +143,9 @@
 	}
 	pkg.Licenses = lics
 	pkg.DocumentationHTML = convertDocumentation(docHTML)
-	if !db.bypassLicenseCheck {
+	if db.bypassLicenseCheck {
+		pkg.IsRedistributable = true
+	} else {
 		pkg.RemoveNonRedistributableData()
 	}
 	return &pkg, nil
diff --git a/internal/postgres/unit.go b/internal/postgres/unit.go
index 5cc7762..41674f2 100644
--- a/internal/postgres/unit.go
+++ b/internal/postgres/unit.go
@@ -66,7 +66,9 @@
 		}
 		u.Subdirectories = pkgs
 	}
-	if !db.bypassLicenseCheck {
+	if db.bypassLicenseCheck {
+		u.IsRedistributable = true
+	} else {
 		u.RemoveNonRedistributableData()
 	}
 	return u, nil
@@ -227,8 +229,10 @@
 	if err := db.db.RunQuery(ctx, query, collect, modulePath, resolvedVersion); err != nil {
 		return nil, err
 	}
-	if !db.bypassLicenseCheck {
-		for _, p := range packages {
+	for _, p := range packages {
+		if db.bypassLicenseCheck {
+			p.IsRedistributable = true
+		} else {
 			p.RemoveNonRedistributableData()
 		}
 	}
diff --git a/internal/postgres/versionstate_test.go b/internal/postgres/versionstate_test.go
index f18b608..4d5be4b 100644
--- a/internal/postgres/versionstate_test.go
+++ b/internal/postgres/versionstate_test.go
@@ -144,7 +144,7 @@
 }
 
 func TestUpsertModuleVersionStates(t *testing.T) {
-	ctx, cancel := context.WithTimeout(context.Background(), testTimeout)
+	ctx, cancel := context.WithTimeout(context.Background(), testTimeout*2)
 	defer cancel()
 
 	m := sample.DefaultModule()
diff --git a/internal/proxydatasource/datasource.go b/internal/proxydatasource/datasource.go
index 9f3cfa9..f28d854 100644
--- a/internal/proxydatasource/datasource.go
+++ b/internal/proxydatasource/datasource.go
@@ -90,8 +90,15 @@
 	}
 	res := fetch.FetchModule(ctx, modulePath, version, ds.proxyClient, ds.sourceClient)
 	m := res.Module
-	if m != nil && !ds.bypassLicenseCheck {
-		m.RemoveNonRedistributableData()
+	if m != nil {
+		if ds.bypassLicenseCheck {
+			m.IsRedistributable = true
+			for _, pkg := range m.LegacyPackages {
+				pkg.IsRedistributable = true
+			}
+		} else {
+			m.RemoveNonRedistributableData()
+		}
 	}
 	ds.versionCache[key] = &versionEntry{module: m, err: err}
 	if res.Error != nil {