No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

46 líneas
2.6KB

  1. param(
  2. [Parameter(Mandatory = $true)][string]$ConfigPath,
  3. [Parameter(Mandatory = $true)][ValidateSet('Seed','SuppressSecond','Check')][string]$Mode
  4. )
  5. $ErrorActionPreference = 'Stop'
  6. . (Join-Path $PSScriptRoot 'mail-common.ps1')
  7. $context = Get-MailContext $ConfigPath
  8. $db = Open-MailDatabase $context
  9. try {
  10. if ($Mode -eq 'Seed') {
  11. foreach ($address in @('one@example.invalid','two@example.invalid','blocked@example.invalid')) {
  12. $command = $db.CreateCommand()
  13. $command.CommandText = "INSERT INTO [Contact] ([EmailOriginal],[EmailKey],[BusinessName],[SourceReference],[Country],[EligibilityBasis],[CreatedAtUtc]) VALUES (?,?,?,?,?,?,?)"
  14. foreach ($value in @($address,$address,'Example Business','https://example.invalid/listing','US','public_listing')) {
  15. $null = $command.Parameters.Add('text', [System.Data.OleDb.OleDbType]::VarWChar, 254)
  16. $command.Parameters[$command.Parameters.Count - 1].Value = $value
  17. }
  18. $null = $command.Parameters.Add('created', [System.Data.OleDb.OleDbType]::Date)
  19. $command.Parameters[6].Value = [DateTime]::UtcNow
  20. $null = $command.ExecuteNonQuery()
  21. }
  22. }
  23. if ($Mode -in @('Seed','SuppressSecond')) {
  24. $address = if ($Mode -eq 'Seed') { 'blocked@example.invalid' } else { 'two@example.invalid' }
  25. $command = $db.CreateCommand()
  26. $command.CommandText = 'INSERT INTO [Suppression] ([EmailKey],[Reason],[RecordedAtUtc]) VALUES (?,?,?)'
  27. $null = $command.Parameters.Add('email', [System.Data.OleDb.OleDbType]::VarWChar, 254)
  28. $command.Parameters[0].Value = $address
  29. $null = $command.Parameters.Add('reason', [System.Data.OleDb.OleDbType]::VarWChar, 40)
  30. $command.Parameters[1].Value = 'opt-out'
  31. $null = $command.Parameters.Add('recorded', [System.Data.OleDb.OleDbType]::Date)
  32. $command.Parameters[2].Value = [DateTime]::UtcNow
  33. $null = $command.ExecuteNonQuery()
  34. }
  35. if ($Mode -eq 'Check') {
  36. $command = $db.CreateCommand()
  37. $command.CommandText = "SELECT COUNT(*) FROM [Campaign] WHERE [Status]='approved_paused'"
  38. if ([int]$command.ExecuteScalar() -ne 1) { throw 'Expected one approved paused campaign' }
  39. $command.CommandText = "SELECT COUNT(*) FROM [Delivery] WHERE [Status]='pending'"
  40. if ([int]$command.ExecuteScalar() -ne 1) { throw 'Expected one pending delivery' }
  41. $command.CommandText = 'SELECT COUNT(*) FROM [Attempt]'
  42. if ([int]$command.ExecuteScalar() -ne 0) { throw 'Internal test unexpectedly advanced the live attempt queue' }
  43. }
  44. }
  45. finally { $db.Dispose() }

Powered by TurnKey Linux.