6 changed files with 95 additions and 11 deletions
-
4docker/golang.Dockerfile
-
2src/domains/app/app.go
-
6src/internal/rest/app.go
-
27src/services/app.go
-
21src/validations/app_validation.go
-
46src/validations/app_validation_test.go
@ -0,0 +1,21 @@ |
|||||
|
package validations |
||||
|
|
||||
|
import ( |
||||
|
"context" |
||||
|
"fmt" |
||||
|
pkgError "github.com/aldinokemal/go-whatsapp-web-multidevice/pkg/error" |
||||
|
validation "github.com/go-ozzo/ozzo-validation/v4" |
||||
|
"regexp" |
||||
|
) |
||||
|
|
||||
|
func ValidateLoginWithCode(ctx context.Context, phoneNumber string) error { |
||||
|
// Combine validations using a single ValidateWithContext call
|
||||
|
err := validation.ValidateWithContext(ctx, &phoneNumber, |
||||
|
validation.Required, |
||||
|
validation.Match(regexp.MustCompile(`^\+?[0-9]{1,15}$`)), |
||||
|
) |
||||
|
if err != nil { |
||||
|
return pkgError.ValidationError(fmt.Sprintf("phone_number(%s): %s", phoneNumber, err.Error())) |
||||
|
} |
||||
|
return nil |
||||
|
} |
||||
@ -0,0 +1,46 @@ |
|||||
|
package validations |
||||
|
|
||||
|
import ( |
||||
|
"context" |
||||
|
"testing" |
||||
|
) |
||||
|
|
||||
|
func TestValidateLoginWithCode(t *testing.T) { |
||||
|
type args struct { |
||||
|
phoneNumber string |
||||
|
} |
||||
|
tests := []struct { |
||||
|
name string |
||||
|
args args |
||||
|
wantErr bool |
||||
|
}{ |
||||
|
{ |
||||
|
name: "Phone with +", |
||||
|
args: args{phoneNumber: "+6281234567890"}, |
||||
|
wantErr: false, |
||||
|
}, |
||||
|
{ |
||||
|
name: "Phone without +", |
||||
|
args: args{phoneNumber: "621234567890"}, |
||||
|
wantErr: false, |
||||
|
}, |
||||
|
{ |
||||
|
name: "Phone with 0", |
||||
|
args: args{phoneNumber: "081234567890"}, |
||||
|
wantErr: false, |
||||
|
}, |
||||
|
{ |
||||
|
name: "Phone contains alphabet", |
||||
|
args: args{phoneNumber: "+6281234567890a"}, |
||||
|
wantErr: true, |
||||
|
}, |
||||
|
} |
||||
|
|
||||
|
for _, tt := range tests { |
||||
|
t.Run(tt.name, func(t *testing.T) { |
||||
|
if err := ValidateLoginWithCode(context.Background(), tt.args.phoneNumber); (err != nil) != tt.wantErr { |
||||
|
t.Errorf("ValidateLoginWithCode() error = %v, wantErr %v", err, tt.wantErr) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue