@@ -2,8 +2,6 @@ package update
22
33import (
44 "context"
5- "fmt"
6- "strings"
75 "testing"
86
97 "github.com/stackitcloud/stackit-cli/internal/pkg/globalflags"
@@ -26,11 +24,12 @@ var testProjectId = uuid.NewString()
2624var testZoneId = uuid .NewString ()
2725var testRecordSetId = uuid .NewString ()
2826
29- var recordTxtOver255Char = []string {
30- "foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoo" ,
31- "foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoo" ,
32- "foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobar" ,
33- }
27+ var (
28+ text255Characters = "foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoo"
29+ text256Characters = "foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoob"
30+ result256Characters = "\" foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoo\" \" b\" "
31+ text4050Characters = "foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoofoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoofoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoofoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoofoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoofoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoofoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoofoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoofoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoofoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoofoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoofoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoofoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoofoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoofoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoofoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoo"
32+ )
3433
3534func fixtureArgValues (mods ... func (argValues []string )) []string {
3635 argValues := []string {
@@ -315,6 +314,71 @@ func TestParseInput(t *testing.T) {
315314 }
316315}
317316
317+ func TestParseTxtRecord (t * testing.T ) {
318+ tests := []struct {
319+ description string
320+ records * []string
321+ expectedResult * []string
322+ isValid bool
323+ shouldErr bool
324+ }{
325+ {
326+ description : "empty" ,
327+ records : nil ,
328+ expectedResult : nil ,
329+ isValid : true ,
330+ },
331+ {
332+ description : "base" ,
333+ records : & []string {"foobar" },
334+ expectedResult : & []string {"foobar" },
335+ isValid : true ,
336+ },
337+ {
338+ description : "input has length of 255 characters and should not split" ,
339+ records : & []string {text255Characters },
340+ expectedResult : & []string {text255Characters },
341+ isValid : true ,
342+ },
343+ {
344+ description : "input has length 256 characters and should split" ,
345+ records : & []string {text256Characters },
346+ expectedResult : & []string {result256Characters },
347+ isValid : true ,
348+ },
349+ {
350+ description : "input has length 4050 characters and should fail" ,
351+ records : & []string {text4050Characters },
352+ isValid : false ,
353+ },
354+ }
355+ for _ , tt := range tests {
356+ t .Run (tt .description , func (t * testing.T ) {
357+ err := parseTxtRecord (tt .records )
358+ if err != nil {
359+ if ! tt .isValid {
360+ return
361+ }
362+ t .Fatalf ("should not fail but got error: %v" , err )
363+ return
364+ }
365+ if err == nil && ! tt .isValid {
366+ t .Fatalf ("should fail but got none" )
367+ return
368+ }
369+
370+ if ! tt .isValid {
371+ t .Fatalf ("should fail but got none" )
372+ return
373+ }
374+ diff := cmp .Diff (tt .expectedResult , tt .records )
375+ if diff != "" {
376+ t .Fatalf ("Data does not match: %s" , diff )
377+ }
378+ })
379+ }
380+ }
381+
318382func TestBuildRequest (t * testing.T ) {
319383 tests := []struct {
320384 description string
@@ -339,34 +403,6 @@ func TestBuildRequest(t *testing.T) {
339403 expectedRequest : testClient .PartialUpdateRecordSet (testCtx , testProjectId , testZoneId , testRecordSetId ).
340404 PartialUpdateRecordSetPayload (dns.PartialUpdateRecordSetPayload {}),
341405 },
342- {
343- description : "update TXT record with > 255 characters" ,
344- model : fixtureInputModel (func (model * inputModel ) {
345- model .Type = utils .Ptr (txtType )
346- model .Records = utils .Ptr ([]string {strings .Join (recordTxtOver255Char , "" )})
347- }),
348- expectedRequest : func () dns.ApiPartialUpdateRecordSetRequest {
349- var content string
350- for idx , val := range recordTxtOver255Char {
351- content += fmt .Sprintf ("%q" , val )
352- if idx != len (recordTxtOver255Char )- 1 {
353- content += " "
354- }
355- }
356-
357- return testClient .PartialUpdateRecordSet (testCtx , testProjectId , testZoneId , testRecordSetId ).
358- PartialUpdateRecordSetPayload (dns.PartialUpdateRecordSetPayload {
359- Name : utils .Ptr ("example.com" ),
360- Records : & []dns.RecordPayload {
361- {
362- Content : utils .Ptr (content ),
363- },
364- },
365- Comment : utils .Ptr ("comment" ),
366- Ttl : utils .Ptr (int64 (3600 )),
367- })
368- }(),
369- },
370406 }
371407
372408 for _ , tt := range tests {
0 commit comments