mirror of
https://github.com/qdm12/gluetun.git
synced 2026-06-19 18:04:09 +02:00
hotfix(storage): do not write filepath field for non-manifest files
This commit is contained in:
@@ -51,9 +51,12 @@ func (s *Storage) flushToFile(manifestPath string) error {
|
|||||||
return fmt.Errorf("opening servers data file for %s: %w", provider, err)
|
return fmt.Errorf("opening servers data file for %s: %w", provider, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
encodedProviderServers := providerServers
|
||||||
|
encodedProviderServers.Filepath = ""
|
||||||
|
|
||||||
encoder := json.NewEncoder(providerFile)
|
encoder := json.NewEncoder(providerFile)
|
||||||
encoder.SetIndent("", " ")
|
encoder.SetIndent("", " ")
|
||||||
err = encoder.Encode(providerServers)
|
err = encoder.Encode(encodedProviderServers)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
_ = providerFile.Close()
|
_ = providerFile.Close()
|
||||||
return fmt.Errorf("encoding servers data for %s: %w", provider, err)
|
return fmt.Errorf("encoding servers data for %s: %w", provider, err)
|
||||||
|
|||||||
@@ -0,0 +1,64 @@
|
|||||||
|
package storage
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/qdm12/gluetun/internal/models"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Test_flushToFile_filepathOnlyInManifest(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
tempPath := t.TempDir()
|
||||||
|
providerFilepath := filepath.Join(tempPath, "provider.json")
|
||||||
|
manifestPath := filepath.Join(tempPath, "manifest.json")
|
||||||
|
|
||||||
|
storage := &Storage{
|
||||||
|
mergedServers: models.AllServers{
|
||||||
|
Version: 1,
|
||||||
|
ProviderToServers: map[string]models.Servers{
|
||||||
|
"provider": {
|
||||||
|
Version: 1,
|
||||||
|
Timestamp: 1,
|
||||||
|
Filepath: providerFilepath,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
err := storage.flushToFile(manifestPath)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
providerFile, err := os.Open(providerFilepath)
|
||||||
|
require.NoError(t, err)
|
||||||
|
defer providerFile.Close()
|
||||||
|
|
||||||
|
providerContent := make(map[string]json.RawMessage)
|
||||||
|
err = json.NewDecoder(providerFile).Decode(&providerContent)
|
||||||
|
require.NoError(t, err)
|
||||||
|
_, hasFilepath := providerContent["filepath"]
|
||||||
|
assert.False(t, hasFilepath)
|
||||||
|
|
||||||
|
manifestFile, err := os.Open(manifestPath)
|
||||||
|
require.NoError(t, err)
|
||||||
|
defer manifestFile.Close()
|
||||||
|
|
||||||
|
manifestContent := make(map[string]json.RawMessage)
|
||||||
|
err = json.NewDecoder(manifestFile).Decode(&manifestContent)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
providerMetadataRaw, ok := manifestContent["provider"]
|
||||||
|
require.True(t, ok)
|
||||||
|
|
||||||
|
var providerMetadata struct {
|
||||||
|
Filepath string `json:"filepath"`
|
||||||
|
}
|
||||||
|
err = json.Unmarshal(providerMetadataRaw, &providerMetadata)
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, providerFilepath, providerMetadata.Filepath)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user