test: Add test around account settings.
This commit is contained in:
parent
ff78a23084
commit
5747b85543
2
go.mod
2
go.mod
|
@ -7,7 +7,7 @@ require (
|
|||
github.com/Masterminds/semver/v3 v3.2.0
|
||||
github.com/ProtonMail/gluon v0.17.1-0.20231009084701-3af0474b0b3c
|
||||
github.com/ProtonMail/go-autostart v0.0.0-20210130080809-00ed301c8e9a
|
||||
github.com/ProtonMail/go-proton-api v0.4.1-0.20231016151024-8f03c5a977df
|
||||
github.com/ProtonMail/go-proton-api v0.4.1-0.20231018070752-2449db500edd
|
||||
github.com/ProtonMail/gopenpgp/v2 v2.7.3-proton
|
||||
github.com/PuerkitoBio/goquery v1.8.1
|
||||
github.com/abiosoft/ishell v2.0.0+incompatible
|
||||
|
|
4
go.sum
4
go.sum
|
@ -34,8 +34,8 @@ github.com/ProtonMail/go-message v0.13.1-0.20230526094639-b62c999c85b7 h1:+j+Kd/
|
|||
github.com/ProtonMail/go-message v0.13.1-0.20230526094639-b62c999c85b7/go.mod h1:NBAn21zgCJ/52WLDyed18YvYFm5tEoeDauubFqLokM4=
|
||||
github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f h1:tCbYj7/299ekTTXpdwKYF8eBlsYsDVoggDAuAjoK66k=
|
||||
github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f/go.mod h1:gcr0kNtGBqin9zDW9GOHcVntrwnjrK+qdJ06mWYBybw=
|
||||
github.com/ProtonMail/go-proton-api v0.4.1-0.20231016151024-8f03c5a977df h1:4UteX2UmmLe1xvn3HmdhLUjtwKuOMxzSa/tPsUvnX7s=
|
||||
github.com/ProtonMail/go-proton-api v0.4.1-0.20231016151024-8f03c5a977df/go.mod h1:ZmvQMA8hanLiD1tFsvu9+qGBcuxbIRfch/4z/nqBhXA=
|
||||
github.com/ProtonMail/go-proton-api v0.4.1-0.20231018070752-2449db500edd h1:/Z3nwzsVeSwTFkrIKG7BLD24P4cxpaJBn8mzbSe2kPg=
|
||||
github.com/ProtonMail/go-proton-api v0.4.1-0.20231018070752-2449db500edd/go.mod h1:ZmvQMA8hanLiD1tFsvu9+qGBcuxbIRfch/4z/nqBhXA=
|
||||
github.com/ProtonMail/go-srp v0.0.7 h1:Sos3Qk+th4tQR64vsxGIxYpN3rdnG9Wf9K4ZloC1JrI=
|
||||
github.com/ProtonMail/go-srp v0.0.7/go.mod h1:giCp+7qRnMIcCvI6V6U3S1lDDXDQYx2ewJ6F/9wdlJk=
|
||||
github.com/ProtonMail/gopenpgp/v2 v2.7.3-proton h1:wuAxBUU9qF2wyDVJprn/2xPDx000eol5gwlKbOUYY88=
|
||||
|
|
|
@ -6,4 +6,14 @@ Feature: Account settings
|
|||
When bridge starts
|
||||
|
||||
Scenario: Check account default settings
|
||||
the account "[user:user]" has default draft format "HTML"
|
||||
Then the account "[user:user]" matches the following settings:
|
||||
| DraftMIMEType | AttachPublicKey | Sign | PGPScheme |
|
||||
| text/html | false | 0 | 0 |
|
||||
When the account "[user:user]" has public key attachment "enabled"
|
||||
And the account "[user:user]" has sign external messages "enabled"
|
||||
And the account "[user:user]" has default draft format "plain"
|
||||
And the account "[user:user]" has default PGP schema "inline"
|
||||
Then the account "[user:user]" matches the following settings:
|
||||
| DraftMIMEType | AttachPublicKey | Sign | PGPScheme |
|
||||
| text/plain | true | 1 | 8 |
|
||||
|
||||
|
|
|
@ -114,6 +114,7 @@ func (s *scenario) steps(ctx *godog.ScenarioContext) {
|
|||
ctx.Step(`^the account "([^"]*)" has sign external messages "([^"]*)"`, s.accountHasSignExternalMessages)
|
||||
ctx.Step(`^the account "([^"]*)" has default draft format "([^"]*)"`, s.accountHasDefaultDraftFormat)
|
||||
ctx.Step(`^the account "([^"]*)" has default PGP schema "([^"]*)"`, s.accountHasDefaultPGPSchema)
|
||||
ctx.Step(`^the account "([^"]*)" matches the following settings:$`, s.accountMatchesSettings)
|
||||
|
||||
// ==== IMAP ====
|
||||
ctx.Step(`^user "([^"]*)" connects IMAP client "([^"]*)"$`, s.userConnectsIMAPClient)
|
||||
|
|
|
@ -28,6 +28,7 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/ProtonMail/gluon/rfc822"
|
||||
"github.com/ProtonMail/go-proton-api"
|
||||
"github.com/ProtonMail/proton-bridge/v3/pkg/message"
|
||||
"github.com/ProtonMail/proton-bridge/v3/pkg/message/parser"
|
||||
pmmime "github.com/ProtonMail/proton-bridge/v3/pkg/mime"
|
||||
|
@ -555,3 +556,10 @@ type Contact struct {
|
|||
Sign string `bdd:"signature"`
|
||||
Encrypt string `bdd:"encryption"`
|
||||
}
|
||||
|
||||
type MailSettings struct {
|
||||
DraftMIMEType rfc822.MIMEType `bdd:"DraftMIMEType"`
|
||||
AttachPublicKey proton.Bool `bdd:"AttachPublicKey"`
|
||||
Sign proton.SignExternalMessages `bdd:"Sign"`
|
||||
PGPScheme proton.EncryptionScheme `bdd:"PGPScheme"`
|
||||
}
|
||||
|
|
|
@ -643,3 +643,29 @@ func (s *scenario) accountHasDefaultPGPSchema(account, schema string) error {
|
|||
return err
|
||||
})
|
||||
}
|
||||
|
||||
func (s *scenario) accountMatchesSettings(account string, table *godog.Table) error {
|
||||
return s.t.withClient(context.Background(), account, func(ctx context.Context, c *proton.Client) error {
|
||||
wantSettings, err := unmarshalTable[MailSettings](table)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
settings, err := c.GetMailSettings(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(wantSettings) != 1 {
|
||||
return errors.New("this step only supports one settings definition at a time")
|
||||
}
|
||||
|
||||
return matchSettings(settings, wantSettings[0])
|
||||
})
|
||||
}
|
||||
|
||||
func matchSettings(have proton.MailSettings, want MailSettings) error {
|
||||
if !IsSub(ToAny(have), ToAny(want)) {
|
||||
return fmt.Errorf("missing mailsettings: have %#v, want %#v", have, want)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue