feat: skip tag if disabled

This commit is contained in:
Kevin Franklin Kim 2024-06-27 10:38:16 +02:00
parent 51a8522103
commit 9b852d0079
No known key found for this signature in database
24 changed files with 518 additions and 58 deletions

View File

@ -57,7 +57,13 @@ typescript:
tagmanager:
tags:
ga4_enabled: true
ga4:
enabled: true
umami:
enabled: false
domain: www.your.domain
website_id: 123456-123456-123456-123456
endpoint_url: https://site-gtm-umami-ummi/api/send
packages:
- path: 'github.com/username/repository/event'
types:

View File

@ -2,10 +2,11 @@ package cmd
import (
"github.com/foomo/sesamy-cli/pkg/tagmanager"
"github.com/foomo/sesamy-cli/pkg/tagmanager/client"
client2 "github.com/foomo/sesamy-cli/pkg/tagmanager/tag"
"github.com/foomo/sesamy-cli/pkg/tagmanager/trigger"
"github.com/foomo/sesamy-cli/pkg/tagmanager/variable"
containervariable "github.com/foomo/sesamy-cli/pkg/tagmanager/common/variable"
containerclient "github.com/foomo/sesamy-cli/pkg/tagmanager/server/client"
containertag "github.com/foomo/sesamy-cli/pkg/tagmanager/server/tag"
containertemplate "github.com/foomo/sesamy-cli/pkg/tagmanager/server/template"
containertrigger "github.com/foomo/sesamy-cli/pkg/tagmanager/server/trigger"
"github.com/spf13/cobra"
"google.golang.org/api/option"
tagmanager2 "google.golang.org/api/tagmanager/v2"
@ -56,33 +57,26 @@ func NewTagManagerServerCmd(root *cobra.Command) {
}
}
var ga4MeasurementID *tagmanager2.Variable
{
name := p.Variables.ConstantName("Google Analytics GA4 ID")
if ga4MeasurementID, err = c.UpsertVariable(variable.NewConstant(name, c.MeasurementID())); err != nil {
return err
}
}
var webContainerMeasurementID *tagmanager2.Variable
{
name := p.Variables.ConstantName("Google Tag Mangager Web Container ID")
if webContainerMeasurementID, err = c.UpsertVariable(variable.NewConstant(name, cfg.Google.GTM.Web.MeasurementID)); err != nil {
if webContainerMeasurementID, err = c.UpsertVariable(containervariable.NewConstant(name, cfg.Google.GTM.Web.MeasurementID)); err != nil {
return err
}
}
{
name := p.ClientName("Google Tag Manager Web Container")
if _, err := c.UpsertClient(client.NewGTM(name, webContainerMeasurementID)); err != nil {
if _, err := c.UpsertClient(containerclient.NewGTM(name, webContainerMeasurementID)); err != nil {
return err
}
}
// --- MPv2 Client ---
var mpv2Client *tagmanager2.Client
{
name := p.ClientName("Measurement Protocol GA4")
if mpv2Client, err = c.UpsertClient(client.NewMPv2(name)); err != nil {
if mpv2Client, err = c.UpsertClient(containerclient.NewMPv2(name)); err != nil {
return err
}
}
@ -90,15 +84,16 @@ func NewTagManagerServerCmd(root *cobra.Command) {
var mpv2ClientTrigger *tagmanager2.Trigger
{
name := p.Triggers.ClientName("Measurement Protocol GA4 Client")
if mpv2ClientTrigger, err = c.UpsertTrigger(trigger.NewClient(name, mpv2Client)); err != nil {
if mpv2ClientTrigger, err = c.UpsertTrigger(containertrigger.NewClient(name, mpv2Client)); err != nil {
return err
}
}
// --- GA4 Client ---
var ga4Client *tagmanager2.Client
{
name := p.ClientName("Google Analytics GA4")
if ga4Client, err = c.UpsertClient(client.NewGA4(name)); err != nil {
if ga4Client, err = c.UpsertClient(containerclient.NewGA4(name)); err != nil {
return err
}
}
@ -106,14 +101,40 @@ func NewTagManagerServerCmd(root *cobra.Command) {
var ga4ClientTrigger *tagmanager2.Trigger
{
name := p.Triggers.ClientName("Google Analytics GA4 Client")
if ga4ClientTrigger, err = c.UpsertTrigger(trigger.NewClient(name, ga4Client)); err != nil {
if ga4ClientTrigger, err = c.UpsertTrigger(containertrigger.NewClient(name, ga4Client)); err != nil {
return err
}
}
if cfg.Tagmanager.Tags.GA4Enabled {
// --- Tags ---
if cfg.Tagmanager.Tags.GA4.Enabled {
var ga4MeasurementID *tagmanager2.Variable
{
name := p.Variables.ConstantName("Google Analytics GA4 ID")
if ga4MeasurementID, err = c.UpsertVariable(containervariable.NewConstant(name, c.MeasurementID())); err != nil {
return err
}
}
name := p.Tags.ServerGA4EventName("Google Analytics GA4")
if _, err := c.UpsertTag(client2.NewServerGA4Event(name, ga4MeasurementID, ga4ClientTrigger, mpv2ClientTrigger)); err != nil {
if _, err := c.UpsertTag(containertag.NewGoogleAnalyticsGA4(name, ga4MeasurementID, ga4ClientTrigger, mpv2ClientTrigger)); err != nil {
return err
}
}
if cfg.Tagmanager.Tags.Umami.Enabled {
var umamiTemplate *tagmanager2.CustomTemplate
if umamiTemplate, err = c.UpsertCustomTemplate(containertemplate.NewUmami("Sesamy Umami")); err != nil {
return err
}
if _, err := c.UpsertTag(containertag.NewUmami(
"Umami",
cfg.Tagmanager.Tags.Umami.WebsiteID,
cfg.Tagmanager.Tags.Umami.Domain,
cfg.Tagmanager.Tags.Umami.EndpointURL,
umamiTemplate,
ga4ClientTrigger,
mpv2ClientTrigger,
)); err != nil {
return err
}
}

View File

@ -7,9 +7,9 @@ import (
"github.com/foomo/gocontemplate/pkg/assume"
"github.com/foomo/gocontemplate/pkg/contemplate"
"github.com/foomo/sesamy-cli/pkg/tagmanager"
client "github.com/foomo/sesamy-cli/pkg/tagmanager/tag"
trigger2 "github.com/foomo/sesamy-cli/pkg/tagmanager/trigger"
"github.com/foomo/sesamy-cli/pkg/tagmanager/variable"
containervariable "github.com/foomo/sesamy-cli/pkg/tagmanager/common/variable"
containertag "github.com/foomo/sesamy-cli/pkg/tagmanager/web/tag"
containertrigger "github.com/foomo/sesamy-cli/pkg/tagmanager/web/trigger"
"github.com/foomo/sesamy-cli/pkg/utils"
"github.com/pkg/errors"
"github.com/spf13/cobra"
@ -92,7 +92,7 @@ func NewTagmanagerWebCmd(root *cobra.Command) {
var ga4MeasurementID *tagmanager2.Variable
{
name := p.Variables.ConstantName("Google Analytics GA4 ID")
if ga4MeasurementID, err = c.UpsertVariable(variable.NewConstant(name, c.MeasurementID())); err != nil {
if ga4MeasurementID, err = c.UpsertVariable(containervariable.NewConstant(name, c.MeasurementID())); err != nil {
return err
}
}
@ -100,7 +100,7 @@ func NewTagmanagerWebCmd(root *cobra.Command) {
var serverContainerURL *tagmanager2.Variable
{
name := p.Variables.ConstantName("Server Container URL")
if serverContainerURL, err = c.UpsertVariable(variable.NewConstant(name, cfg.Google.GT.ServerContainerURL)); err != nil {
if serverContainerURL, err = c.UpsertVariable(containervariable.NewConstant(name, cfg.Google.GT.ServerContainerURL)); err != nil {
return err
}
}
@ -108,7 +108,7 @@ func NewTagmanagerWebCmd(root *cobra.Command) {
var googleTagSettings *tagmanager2.Variable
{
name := p.Variables.GTSettingsName("Google Tag")
if googleTagSettings, err = c.UpsertVariable(variable.NewGTSettings(name, map[string]*tagmanager2.Variable{
if googleTagSettings, err = c.UpsertVariable(containervariable.NewGTSettings(name, map[string]*tagmanager2.Variable{
"server_container_url": serverContainerURL,
})); err != nil {
return err
@ -117,7 +117,7 @@ func NewTagmanagerWebCmd(root *cobra.Command) {
{
name := p.Tags.GoogleTagName("Google Tag")
if _, err = c.UpsertTag(client.NewGoogleTag(name, ga4MeasurementID, googleTagSettings, map[string]string{
if _, err = c.UpsertTag(containertag.NewGoogleTag(name, ga4MeasurementID, googleTagSettings, map[string]string{
"enable_page_views": strconv.FormatBool(cfg.Google.GT.EnablePageViews),
})); err != nil {
return err
@ -128,34 +128,32 @@ func NewTagmanagerWebCmd(root *cobra.Command) {
var trigger *tagmanager2.Trigger
{
name := p.Triggers.CustomEventName(event)
if trigger, err = c.UpsertTrigger(trigger2.NewCustomEvent(name, event)); err != nil {
if trigger, err = c.UpsertTrigger(containertrigger.NewCustomEvent(name, event)); err != nil {
return err
}
}
if cfg.Tagmanager.Tags.GA4Enabled {
eventSettingsVariables := make(map[string]*tagmanager2.Variable, len(parameters))
for _, parameter := range parameters {
name := p.Variables.EventModelName(parameter)
eventSettingsVariables[parameter], err = c.UpsertVariable(variable.NewEventModel(name, parameter))
if err != nil {
return err
}
eventSettingsVariables := make(map[string]*tagmanager2.Variable, len(parameters))
for _, parameter := range parameters {
name := p.Variables.EventModelName(parameter)
eventSettingsVariables[parameter], err = c.UpsertVariable(containervariable.NewEventModel(name, parameter))
if err != nil {
return err
}
}
var eventSettings *tagmanager2.Variable
{
name := p.Variables.GTEventSettingsName(event)
if eventSettings, err = c.UpsertVariable(variable.NewGTEventSettings(name, eventSettingsVariables)); err != nil {
return err
}
var eventSettings *tagmanager2.Variable
{
name := p.Variables.GTEventSettingsName(event)
if eventSettings, err = c.UpsertVariable(containervariable.NewGTEventSettings(name, eventSettingsVariables)); err != nil {
return err
}
}
{
name := p.Tags.GA4EventName(event)
if _, err := c.UpsertTag(client.NewGA4Event(name, event, eventSettings, ga4MeasurementID, trigger)); err != nil {
return err
}
{
name := p.Tags.GA4EventName(event)
if _, err := c.UpsertTag(containertag.NewGA4Event(name, event, eventSettings, ga4MeasurementID, trigger)); err != nil {
return err
}
}
}

2
go.mod
View File

@ -1,6 +1,6 @@
module github.com/foomo/sesamy-cli
go 1.22.3
go 1.22.4
require (
github.com/fatih/structtag v1.2.0

View File

@ -9,7 +9,3 @@ type Tagmanager struct {
Tags TagmanagerTags `yaml:"tags"`
Prefixes TagmanagerPrefixes `yaml:"prefixes"`
}
type TagmanagerTags struct {
GA4Enabled bool `yaml:"gA4_enabled"`
}

View File

@ -0,0 +1,5 @@
package config
type TagmanagerTagGA4 struct {
Enabled bool `yaml:"enabled"`
}

View File

@ -0,0 +1,6 @@
package config
type TagmanagerTags struct {
GA4 TagmanagerTagGA4 `yaml:"ga4"`
Umami TagmanagerTagUmami `yaml:"umami"`
}

View File

@ -0,0 +1,8 @@
package config
type TagmanagerTagUmami struct {
Enabled bool `yaml:"enabled"`
Domain string `yaml:"domain"`
WebsiteID string `yaml:"website_id"`
EndpointURL string `yaml:"endpoint_url"`
}

View File

@ -6,6 +6,7 @@ import (
"log/slog"
"time"
"github.com/davecgh/go-spew/spew"
"github.com/mitchellh/hashstructure/v2"
"github.com/pkg/errors"
"google.golang.org/api/option"
@ -35,6 +36,7 @@ type (
builtInVariables map[string]*tagmanager.BuiltInVariable
triggers map[string]*tagmanager.Trigger
tags map[string]*tagmanager.Tag
customTemplates map[string]*tagmanager.CustomTemplate
}
ClientOption func(*Client)
)
@ -345,6 +347,37 @@ func (c *Client) LoadTags() (map[string]*tagmanager.Tag, error) {
return c.tags, nil
}
func (c *Client) CustomTemplate(name string) (*tagmanager.CustomTemplate, error) {
elems, err := c.LoadCustomTemplates()
if err != nil {
return nil, err
}
if _, ok := elems[name]; !ok {
return nil, ErrNotFound
}
return elems[name], nil
}
func (c *Client) LoadCustomTemplates() (map[string]*tagmanager.CustomTemplate, error) {
if c.tags == nil {
c.l.Debug("loading", "type", "CustomTemplate")
r, err := c.Service().Accounts.Containers.Workspaces.Templates.List(c.WorkspacePath()).Do()
if err != nil {
return nil, err
}
res := map[string]*tagmanager.CustomTemplate{}
for _, value := range r.Template {
res[value.Name] = value
}
c.customTemplates = res
}
return c.customTemplates, nil
}
func (c *Client) UpsertClient(item *tagmanager.Client) (*tagmanager.Client, error) {
l := c.l.With("type", "Client", "name", item.Name)
@ -543,3 +576,32 @@ func (c *Client) UpsertTag(item *tagmanager.Tag) (*tagmanager.Tag, error) {
return c.Tag(item.Name)
}
func (c *Client) UpsertCustomTemplate(item *tagmanager.CustomTemplate) (*tagmanager.CustomTemplate, error) {
l := c.l.With("type", "CustomTemplate", "name", item.Name)
item.AccountId = c.AccountID()
item.ContainerId = c.ContainerID()
item.WorkspaceId = c.WorkspaceID()
cache, err := c.CustomTemplate(item.Name)
if err != nil && !errors.Is(err, ErrNotFound) {
return nil, err
}
if cache == nil {
l.Info("⚠️ creating")
c.customTemplates[item.Name], err = c.Service().Accounts.Containers.Workspaces.Templates.Create(c.WorkspacePath(), item).Do()
} else if item.TemplateData == cache.TemplateData {
l.Info("✅ unchanged", "id", cache.TemplateId)
} else {
l.Info("⚠️ updating", "id", cache.TemplateId)
c.customTemplates[item.Name], err = c.Service().Accounts.Containers.Workspaces.Templates.Update(c.WorkspacePath()+"/templates/"+cache.TemplateId, item).Do()
}
if err != nil {
spew.Dump(err)
return nil, err
}
return c.CustomTemplate(item.Name)
}

View File

@ -1,10 +1,10 @@
package client
package tag
import (
"google.golang.org/api/tagmanager/v2"
)
func NewServerGA4Event(name string, measurementID *tagmanager.Variable, triggers ...*tagmanager.Trigger) *tagmanager.Tag {
func NewGoogleAnalyticsGA4(name string, measurementID *tagmanager.Variable, triggers ...*tagmanager.Trigger) *tagmanager.Tag {
triggerIDs := make([]string, len(triggers))
for i, trigger := range triggers {
triggerIDs[i] = trigger.TriggerId

View File

@ -0,0 +1,43 @@
package tag
import (
"fmt"
"google.golang.org/api/tagmanager/v2"
)
func NewUmami(name, websiteID, domain, endpointURL string, template *tagmanager.CustomTemplate, triggers ...*tagmanager.Trigger) *tagmanager.Tag {
triggerIDs := make([]string, len(triggers))
for i, trigger := range triggers {
triggerIDs[i] = trigger.TriggerId
}
return &tagmanager.Tag{
FiringTriggerId: triggerIDs,
Name: name,
TagFiringOption: "oncePerEvent",
Parameter: []*tagmanager.Parameter{
{
Key: "websiteId",
Type: "template",
Value: websiteID,
},
{
Key: "endpointUrl",
Type: "template",
Value: endpointURL,
},
{
Key: "domain",
Type: "template",
Value: domain,
},
{
Key: "timeout",
Type: "template",
Value: "1000",
},
},
Type: fmt.Sprintf("cvt_%s_%s", template.ContainerId, template.TemplateId),
}
}

View File

@ -0,0 +1,297 @@
package template
import (
"fmt"
"google.golang.org/api/tagmanager/v2"
)
const DataUmami = `___INFO___
{
"type": "TAG",
"id": "cvt_temp_public_id",
"version": 1,
"securityGroups": [],
"displayName": "%s",
"brand": {
"id": "brand_dummy",
"displayName": "Umami",
"thumbnail": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QAvgD/ALe9KR/IAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5gwHAwsAtVzgFQAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAJmSURBVFjDxVe/SzJxHH5OckgagrsImms4bTm1XEIQhXCqTXBzkLYiKtDFBA/xH2gJQRwP1PPHKuiW3HA4SEMgurlcNRy5HZ936LX3Nd/X1Mx74LMc3Pd5vg98Pt/nwxiGQTARa/P+MBgMoCgKnp6e8Pz8DABgWRZ7e3s4PDzEzs7OfAcahkGzVDabJa/XSwA+ymazkc1mG/t2dHRE9/f3NOu5XwqQZZn29/cJADmdTkqn0/Tw8EC6rtMIuq5Tq9WiTCZDbrebABDP81QoFL4nIBaLEQASBIHK5TLNilqt9iHk+vp6MQHRaJQA0MXFBS2Kq6srAkCRSGQ+AfF4nACQKIr0XWQymalOTAioVCoEgM7Pz2lZGDlRLBYnBDCf54AgCGAYBu12e6n9fnBwgLe3N3Q6nf+3YS6XIwBUKpVo2ajVagRgokXHHAgEAnh5eVn67f92YX19Hc1m888kzOfz6Pf7GA6HaDQa8Pl8SCaTPyJgc3MT9XodNzc32NjYgMPhAPN7gpkGC0yG+QI4jjONfGtrCxaWZU0TYLfbzXXAbrfDEgwGTRPgcrkAVVXHAsUq6/Hx8f0x8ng8KyfneZ4MwyALAJydna3c/nA4PP4Y+f3+ld7+9fV1PA+McsAq6u7u7t+BRBTFHye/vb2dnogSicSPkYdCodkyoSRJSyc/PT2dLxVLkkTb29tLIU+lUovtBd1uly4vL8lqtS5EHI1GSVGUqXsBM8tyqqoqZFlGtVqdDJWf4Ha7cXJyguPj4/dR+wWYebfjTqeDXq8HTdOgaRoAgOM4cByH3d1d8Dw/10BizF7PfwHUW1xlBL8DDgAAAABJRU5ErkJggg\u003d\u003d"
},
"description": "Send events to Umami",
"containerContexts": [
"SERVER"
]
}
___TEMPLATE_PARAMETERS___
[
{
"type": "GROUP",
"name": "settings",
"displayName": "Umami Settings",
"groupStyle": "NO_ZIPPY",
"subParams": [
{
"type": "TEXT",
"name": "endpointUrl",
"displayName": "Endpoint URL",
"simpleValueType": true,
"help": "Enter your endpoint URL for your own instance or use https://analytics.umami.is/api/send for Umami Cloud",
"defaultValue": "https://site-gtm-umami-umami/api/send",
"valueValidators": [
{
"type": "NON_EMPTY"
}
]
},
{
"type": "TEXT",
"name": "websiteId",
"displayName": "Website ID",
"simpleValueType": true,
"valueValidators": [
{
"type": "NON_EMPTY"
}
],
"help": "Paste ID for your website from the Umami settings"
},
{
"type": "TEXT",
"name": "domain",
"displayName": "Host / Domain (Optional)",
"simpleValueType": true,
"help": "Enter an optional fixed domain to override event data"
},
{
"type": "TEXT",
"name": "timeout",
"displayName": "Timeout (ms)",
"simpleValueType": true,
"valueValidators": [
{
"type": "NON_EMPTY"
},
{
"type": "POSITIVE_NUMBER"
}
],
"defaultValue": 1000
}
]
}
]
___SANDBOXED_JS_FOR_SERVER___
/**
* @description Custom server-side Google Tag Manager Tag Template
* Send events to Umami
* @version 0.1.0
* @see {@link https://github.com/mbaersch|GitHub} for more info
* @see {@link https://umami.is/|Umami Homepage}
*/
const JSON = require('JSON');
const parseUrl = require('parseUrl');
const makeString = require('makeString');
const getAllEventData = require('getAllEventData');
const sendHttpRequest = require('sendHttpRequest');
const getRequestHeader = require('getRequestHeader');
const getContainerVersion = require('getContainerVersion');
const logToConsole = require('logToConsole');
const traceId = getRequestHeader('trace-id');
const eventData = getAllEventData();
const pageLocation = eventData.page_location;
if (pageLocation) {
const name = eventData.event_name || "";
const parsedUrl = parseUrl(pageLocation);
const serviceUrl = data.endpointUrl;
const ref = eventData.page_referrer || "";
const hostname = data.domain || parsedUrl.hostname || null;
// https://github.com/umami-software/umami/blob/7a75639dd3d7aeff46104b71ebfb3853fc0eee09/src/tracker/index.d.ts
let umamiEvent = {
type: "event",
payload: {
website: data.websiteId,
name: name,
hostname: hostname,
url: pageLocation.split(parsedUrl.hostname)[1],
referrer: ref,
language: eventData.language || "",
screen: eventData.screen_resolution || "1920x1080"
}
};
logToConsole(
JSON.stringify({
Name: 'Umami',
Type: 'Request',
TraceId: traceId,
EventName: makeString(umamiEvent.payload.name),
RequestMethod: 'POST',
RequestUrl: serviceUrl,
RequestBody: umamiEvent,
})
);
sendHttpRequest(
serviceUrl, (statusCode, headers, body) => {
logToConsole(
JSON.stringify({
Name: 'Umami',
Type: 'Response',
TraceId: traceId,
EventName: makeString(umamiEvent.payload.name),
ResponseStatusCode: statusCode,
ResponseHeaders: headers,
ResponseBody: body,
})
);
if (statusCode >= 200 && statusCode < 300) {
data.gtmOnSuccess();
} else {
data.gtmOnFailure();
}
},
{
headers: {
'user-agent': eventData.user_agent || getRequestHeader("user-agent"),
'content-type': 'application/json'
},
method: 'POST',
timeout: data.timeout||1000
},
JSON.stringify(umamiEvent)
);
} else {
data.gtmOnFailure();
}
___SERVER_PERMISSIONS___
[
{
"instance": {
"key": {
"publicId": "read_request",
"versionId": "1"
},
"param": [
{
"key": "requestAccess",
"value": {
"type": 1,
"string": "any"
}
},
{
"key": "headerAccess",
"value": {
"type": 1,
"string": "any"
}
},
{
"key": "queryParameterAccess",
"value": {
"type": 1,
"string": "any"
}
}
]
},
"isRequired": true
},
{
"instance": {
"key": {
"publicId": "logging",
"versionId": "1"
},
"param": [
{
"key": "environments",
"value": {
"type": 1,
"string": "debug"
}
}
]
},
"isRequired": true
},
{
"instance": {
"key": {
"publicId": "read_container_data",
"versionId": "1"
},
"param": []
},
"isRequired": true
},
{
"instance": {
"key": {
"publicId": "read_event_data",
"versionId": "1"
},
"param": [
{
"key": "eventDataAccess",
"value": {
"type": 1,
"string": "any"
}
}
]
},
"isRequired": true
},
{
"instance": {
"key": {
"publicId": "send_http",
"versionId": "1"
},
"param": [
{
"key": "allowedUrls",
"value": {
"type": 1,
"string": "any"
}
}
]
},
"isRequired": true
}
]
___TESTS___
scenarios: []
___NOTES___
Code generated by sesamy. DO NOT EDIT.
`
func NewUmami(name string) *tagmanager.CustomTemplate {
return &tagmanager.CustomTemplate{
Name: name,
TemplateData: fmt.Sprintf(DataUmami, name),
}
}

View File

@ -4,6 +4,7 @@ import (
"bytes"
"context"
"encoding/json"
"fmt"
"log/slog"
"os"
"testing"
@ -11,8 +12,9 @@ import (
testingx "github.com/foomo/go/testing"
tagx "github.com/foomo/go/testing/tag"
"github.com/foomo/sesamy-cli/pkg/tagmanager"
"github.com/foomo/sesamy-cli/pkg/tagmanager/trigger"
"github.com/foomo/sesamy-cli/pkg/tagmanager/variable"
"github.com/foomo/sesamy-cli/pkg/tagmanager/common/variable"
"github.com/foomo/sesamy-cli/pkg/tagmanager/server/template"
webtrigger "github.com/foomo/sesamy-cli/pkg/tagmanager/web/trigger"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"google.golang.org/api/option"
@ -100,6 +102,22 @@ func TestNewClient_Server(t *testing.T) {
}
})
}
{ // --- Tags ---
t.Run("upsert template", func(t *testing.T) {
obj, err := c.UpsertCustomTemplate(template.NewUmami("Sesamy Umami"))
require.NoError(t, err)
dump(t, obj)
})
t.Run("list templates", func(t *testing.T) {
cmd := c.Service().Accounts.Containers.Workspaces.Templates.List(c.WorkspacePath())
if r, err := cmd.Do(); assert.NoError(t, err) {
// dump(t, r)
fmt.Println(r.Template[2].TemplateData)
}
})
}
}
func TestNewClient_Web(t *testing.T) {
@ -303,7 +321,7 @@ func TestNewClient_Web(t *testing.T) {
})
t.Run("upsert trigger", func(t *testing.T) {
obj, err := c.UpsertTrigger(trigger.NewCustomEvent("Event."+name, name))
obj, err := c.UpsertTrigger(webtrigger.NewCustomEvent("Event."+name, name))
require.NoError(t, err)
t.Log("ID: " + obj.TriggerId)
})