hunk.code_window: 				"subpath",
   				baseRootHtml,
   				baseCss,
   				baseManifestJson,
   				"/subpath",
   				subpathRootHtml,
   				subpathCss,
   				subpathManifestJson,
   			},
  
hunk.labels: keep keep keep keep add keep keep keep keep
hunk.after_edit: 				nil,
  
hunk.file_path: utils/subpath_test.go
hunk.type: add
file: // Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
  // See License.txt for license information.
  
  package model
  
  import (
  	"strings"
  	"testing"
  )
  
  func TestLicenseFeaturesToMap(t *testing.T) {
  	f := Features{}
  	f.SetDefaults()
  
  	m := f.ToMap()
  
  	CheckTrue(t, m["ldap"].(bool))
  	CheckTrue(t, m["mfa"].(bool))
  	CheckTrue(t, m["google"].(bool))
  	CheckTrue(t, m["office365"].(bool))
  	CheckTrue(t, m["compliance"].(bool))
  	CheckTrue(t, m["cluster"].(bool))
  	CheckTrue(t, m["metrics"].(bool))
  	CheckTrue(t, m["mhpns"].(bool))
  	CheckTrue(t, m["saml"].(bool))
  	CheckTrue(t, m["elastic_search"].(bool))
  	CheckTrue(t, m["email_notification_contents"].(bool))
  	CheckTrue(t, m["data_retention"].(bool))
  	CheckTrue(t, m["message_export"].(bool))
  	CheckTrue(t, m["custom_permissions_schemes"].(bool))
  	CheckTrue(t, m["future"].(bool))
  }
  
  func TestLicenseFeaturesSetDefaults(t *testing.T) {
  	f := Features{}
  	f.SetDefaults()
  
  	CheckInt(t, *f.Users, 0)
  	CheckTrue(t, *f.LDAP)
  	CheckTrue(t, *f.MFA)
  	CheckTrue(t, *f.GoogleOAuth)
  	CheckTrue(t, *f.Office365OAuth)
  	CheckTrue(t, *f.Compliance)
  	CheckTrue(t, *f.Cluster)
  	CheckTrue(t, *f.Metrics)
  	CheckTrue(t, *f.MHPNS)
  	CheckTrue(t, *f.SAML)
  	CheckTrue(t, *f.Elasticsearch)
  	CheckTrue(t, *f.EmailNotificationContents)
  	CheckTrue(t, *f.DataRetention)
  	CheckTrue(t, *f.MessageExport)
  	CheckTrue(t, *f.CustomPermissionsSchemes)
  	CheckTrue(t, *f.FutureFeatures)
  
  	f = Features{}
  	f.SetDefaults()
  
  	*f.Users = 300
  	*f.FutureFeatures = false
  	*f.LDAP = true
  	*f.MFA = true
  	*f.GoogleOAuth = true
  	*f.Office365OAuth = true
  	*f.Compliance = true
  	*f.Cluster = true
  	*f.Metrics = true
  	*f.MHPNS = true
  	*f.SAML = true
  	*f.Elasticsearch = true
  	*f.DataRetention = true
  	*f.MessageExport = true
  	*f.CustomPermissionsSchemes = true
  	*f.EmailNotificationContents = true
  
  	f.SetDefaults()
  
  	CheckInt(t, *f.Users, 300)
  	CheckTrue(t, *f.LDAP)
  	CheckTrue(t, *f.MFA)
  	CheckTrue(t, *f.GoogleOAuth)
  	CheckTrue(t, *f.Office365OAuth)
  	CheckTrue(t, *f.Compliance)
  	CheckTrue(t, *f.Cluster)
  	CheckTrue(t, *f.Metrics)
  	CheckTrue(t, *f.MHPNS)
  	CheckTrue(t, *f.SAML)
  	CheckTrue(t, *f.Elasticsearch)
  	CheckTrue(t, *f.EmailNotificationContents)
  	CheckTrue(t, *f.DataRetention)
  	CheckTrue(t, *f.MessageExport)
  	CheckTrue(t, *f.CustomPermissionsSchemes)
  	CheckFalse(t, *f.FutureFeatures)
  }
  
  func TestLicenseIsExpired(t *testing.T) {
  	l1 := License{}
  	l1.ExpiresAt = GetMillis() - 1000
  	if !l1.IsExpired() {
  		t.Fatal("license should be expired")
  	}
  
  	l1.ExpiresAt = GetMillis() + 10000
  	if l1.IsExpired() {
  		t.Fatal("license should not be expired")
  	}
  }
  
  func TestLicenseIsStarted(t *testing.T) {
  	l1 := License{}
  	l1.StartsAt = GetMillis() - 1000
  	if !l1.IsStarted() {
  		t.Fatal("license should be started")
  	}
  
  	l1.StartsAt = GetMillis() + 10000
  	if l1.IsStarted() {
  		t.Fatal("license should not be started")
  	}
  }
  
  func TestLicenseToFromJson(t *testing.T) {
  	f := Features{}
  	f.SetDefaults()
  
  	l := License{
  		Id:        NewId(),
  		IssuedAt:  GetMillis(),
  		StartsAt:  GetMillis(),
  		ExpiresAt: GetMillis(),
  		Customer: &Customer{
  			Id:          NewId(),
  			Name:        NewId(),
  			Email:       NewId(),
  			Company:     NewId(),
  			PhoneNumber: NewId(),
  		},
  		Features: &f,
  	}
  
  	j := l.ToJson()
  
  	l1 := LicenseFromJson(strings.NewReader(j))
  	if l1 == nil {
  		t.Fatalf("Decoding failed but should have passed.")
  	}
  
  	CheckString(t, l1.Id, l.Id)
  	CheckInt64(t, l1.IssuedAt, l.IssuedAt)
  	CheckInt64(t, l1.StartsAt, l.StartsAt)
  	CheckInt64(t, l1.ExpiresAt, l.ExpiresAt)
  
  	CheckString(t, l1.Customer.Id, l.Customer.Id)
  	CheckString(t, l1.Customer.Name, l.Customer.Name)
  	CheckString(t, l1.Customer.Email, l.Customer.Email)
  	CheckString(t, l1.Customer.Company, l.Customer.Company)
  	CheckString(t, l1.Customer.PhoneNumber, l.Customer.PhoneNumber)
  
  	f1 := l1.Features
  
  	CheckInt(t, *f1.Users, *f.Users)
  	CheckBool(t, *f1.LDAP, *f.LDAP)
  	CheckBool(t, *f1.MFA, *f.MFA)
  	CheckBool(t, *f1.GoogleOAuth, *f.GoogleOAuth)
  	CheckBool(t, *f1.Office365OAuth, *f.Office365OAuth)
  	CheckBool(t, *f1.Compliance, *f.Compliance)
  	CheckBool(t, *f1.Cluster, *f.Cluster)
  	CheckBool(t, *f1.Metrics, *f.Metrics)
  	CheckBool(t, *f1.MHPNS, *f.MHPNS)
  	CheckBool(t, *f1.SAML, *f.SAML)
  	CheckBool(t, *f1.Elasticsearch, *f.Elasticsearch)
  	CheckBool(t, *f1.DataRetention, *f.DataRetention)
  	CheckBool(t, *f1.MessageExport, *f.MessageExport)
  	CheckBool(t, *f1.CustomPermissionsSchemes, *f.CustomPermissionsSchemes)
  	CheckBool(t, *f1.FutureFeatures, *f.FutureFeatures)
  
  	invalid := `{"asdf`
  	l2 := LicenseFromJson(strings.NewReader(invalid))
  	if l2 != nil {
  		t.Fatalf("Should have failed but didn't")
  	}
  }
  
  func TestLicenseRecordIsValid(t *testing.T) {
  	lr := LicenseRecord{
  		CreateAt: GetMillis(),
  		Bytes:    "asdfghjkl;",
  	}
  
  	if err := lr.IsValid(); err == nil {
  		t.Fatalf("Should have been invalid")
  	}
  
  	lr.Id = NewId()
  	lr.CreateAt = 0
  	if err := lr.IsValid(); err == nil {
  		t.Fatalf("Should have been invalid")
  	}
  
  	lr.CreateAt = GetMillis()
  	lr.Bytes = ""
  	if err := lr.IsValid(); err == nil {
  		t.Fatalf("Should have been invalid")
  	}
  
  	lr.Bytes = strings.Repeat("0123456789", 1001)
  	if err := lr.IsValid(); err == nil {
  		t.Fatalf("Should have been invalid")
  	}
  
  	lr.Bytes = "ASDFGHJKL;"
  	if err := lr.IsValid(); err != nil {
  		t.Fatal(err)
  	}
  }
  
  func TestLicenseRecordPreSave(t *testing.T) {
  	lr := LicenseRecord{}
  	lr.PreSave()
  
  	if lr.CreateAt == 0 {
  		t.Fatal("CreateAt should not be zero")
  	}
  }
  