mirror of
https://github.com/1Password/onepassword-operator.git
synced 2025-10-22 15:38:06 +00:00

These internal models are introduced to reduce decoupling. The idea is to operate internal model within the project boundaries and convert to appropriate Connect or SDK models in the places where it's necessary.
109 lines
3.0 KiB
Go
109 lines
3.0 KiB
Go
package model
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
connect "github.com/1Password/connect-sdk-go/onepassword"
|
|
sdk "github.com/1password/onepassword-sdk-go"
|
|
)
|
|
|
|
func TestItem_FromConnectItem(t *testing.T) {
|
|
connectItem := &connect.Item{
|
|
ID: "test-item-id",
|
|
Vault: connect.ItemVault{
|
|
ID: "test-vault-id",
|
|
},
|
|
Version: 1,
|
|
Tags: []string{"tag1", "tag2"},
|
|
Fields: []*connect.ItemField{
|
|
{Label: "field1", Value: "value1"},
|
|
{Label: "field2", Value: "value2"},
|
|
},
|
|
Files: []*connect.File{
|
|
{ID: "file1", Name: "file1.txt", Size: 1234},
|
|
{ID: "file2", Name: "file2.txt", Size: 1234},
|
|
},
|
|
CreatedAt: time.Now(),
|
|
}
|
|
|
|
item := &Item{}
|
|
item.FromConnectItem(connectItem)
|
|
|
|
require.Equal(t, connectItem.ID, item.ID)
|
|
require.Equal(t, connectItem.Vault.ID, item.VaultID)
|
|
require.Equal(t, connectItem.Version, item.Version)
|
|
require.ElementsMatch(t, connectItem.Tags, item.Tags)
|
|
|
|
for i, field := range connectItem.Fields {
|
|
require.Equal(t, field.Label, item.Fields[i].Label)
|
|
require.Equal(t, field.Value, item.Fields[i].Value)
|
|
}
|
|
|
|
for i, file := range connectItem.Files {
|
|
require.Equal(t, file.ID, item.Files[i].ID)
|
|
require.Equal(t, file.Name, item.Files[i].Name)
|
|
require.Equal(t, file.Size, item.Files[i].Size)
|
|
}
|
|
|
|
require.Equal(t, connectItem.CreatedAt, item.CreatedAt)
|
|
}
|
|
|
|
func TestItem_FromSDKItem(t *testing.T) {
|
|
sdkItem := &sdk.Item{
|
|
ID: "test-item-id",
|
|
VaultID: "test-vault-id",
|
|
Version: 1,
|
|
Tags: []string{"tag1", "tag2"},
|
|
Fields: []sdk.ItemField{
|
|
{ID: "1", Title: "field1", Value: "value1"},
|
|
{ID: "2", Title: "field2", Value: "value2"},
|
|
},
|
|
Files: []sdk.ItemFile{
|
|
{Attributes: sdk.FileAttributes{Name: "file1.txt", Size: 1234}, FieldID: "file1"},
|
|
{Attributes: sdk.FileAttributes{Name: "file2.txt", Size: 1234}, FieldID: "file2"},
|
|
},
|
|
CreatedAt: time.Now(),
|
|
}
|
|
|
|
item := &Item{}
|
|
item.FromSDKItem(sdkItem)
|
|
|
|
require.Equal(t, sdkItem.ID, item.ID)
|
|
require.Equal(t, sdkItem.VaultID, item.VaultID)
|
|
require.Equal(t, int(sdkItem.Version), item.Version)
|
|
require.ElementsMatch(t, sdkItem.Tags, item.Tags)
|
|
|
|
for i, field := range sdkItem.Fields {
|
|
require.Equal(t, field.Title, item.Fields[i].Label)
|
|
require.Equal(t, field.Value, item.Fields[i].Value)
|
|
}
|
|
|
|
for i, file := range sdkItem.Files {
|
|
require.Equal(t, file.Attributes.ID, item.Files[i].ID)
|
|
require.Equal(t, file.Attributes.Name, item.Files[i].Name)
|
|
require.Equal(t, int(file.Attributes.Size), item.Files[i].Size)
|
|
}
|
|
|
|
require.Equal(t, sdkItem.CreatedAt, item.CreatedAt)
|
|
}
|
|
|
|
func TestItem_FromSDKItemOverview(t *testing.T) {
|
|
sdkItemOverview := &sdk.ItemOverview{
|
|
ID: "test-item-id",
|
|
VaultID: "test-vault-id",
|
|
Tags: []string{"tag1", "tag2"},
|
|
CreatedAt: time.Now(),
|
|
}
|
|
|
|
item := &Item{}
|
|
item.FromSDKItemOverview(sdkItemOverview)
|
|
|
|
require.Equal(t, sdkItemOverview.ID, item.ID)
|
|
require.Equal(t, sdkItemOverview.VaultID, item.VaultID)
|
|
require.ElementsMatch(t, sdkItemOverview.Tags, item.Tags)
|
|
require.Equal(t, sdkItemOverview.CreatedAt, item.CreatedAt)
|
|
}
|