@@ -918,14 +918,14 @@ func TestGetCryptoKeys(t *testing.T) {
918
918
StartsAt : now .Add (- time .Hour ),
919
919
Sequence : 2 ,
920
920
})
921
- key1 := db2sdk .CryptoKey (expectedKey1 )
921
+ encryptionKey := db2sdk .CryptoKey (expectedKey1 )
922
922
923
923
expectedKey2 := dbgen .CryptoKey (t , db , database.CryptoKey {
924
- Feature : database .CryptoKeyFeatureWorkspaceAppsAPIKey ,
924
+ Feature : database .CryptoKeyFeatureWorkspaceAppsToken ,
925
925
StartsAt : now ,
926
926
Sequence : 3 ,
927
927
})
928
- key2 := db2sdk .CryptoKey (expectedKey2 )
928
+ signingKey := db2sdk .CryptoKey (expectedKey2 )
929
929
930
930
// Create a deleted key.
931
931
_ = dbgen .CryptoKey (t , db , database.CryptoKey {
@@ -935,19 +935,7 @@ func TestGetCryptoKeys(t *testing.T) {
935
935
String : "secret1" ,
936
936
Valid : false ,
937
937
},
938
- Sequence : 1 ,
939
- })
940
-
941
- // Create a key with different features.
942
- _ = dbgen .CryptoKey (t , db , database.CryptoKey {
943
- Feature : database .CryptoKeyFeatureTailnetResume ,
944
- StartsAt : now .Add (- time .Hour ),
945
- Sequence : 1 ,
946
- })
947
- _ = dbgen .CryptoKey (t , db , database.CryptoKey {
948
- Feature : database .CryptoKeyFeatureOIDCConvert ,
949
- StartsAt : now .Add (- time .Hour ),
950
- Sequence : 1 ,
938
+ Sequence : 4 ,
951
939
})
952
940
953
941
proxy := coderdenttest .NewWorkspaceProxyReplica (t , api , cclient , & coderdenttest.ProxyOptions {
@@ -957,8 +945,53 @@ func TestGetCryptoKeys(t *testing.T) {
957
945
keys , err := proxy .SDKClient .CryptoKeys (ctx , codersdk .CryptoKeyFeatureWorkspaceAppsAPIKey )
958
946
require .NoError (t , err )
959
947
require .NotEmpty (t , keys )
948
+ // 1 key is generated on startup, the other is the one we generated for our test.
960
949
require .Equal (t , 2 , len (keys .CryptoKeys ))
961
- requireContainsKeys (t , keys .CryptoKeys , key1 , key2 )
950
+ requireContainsKeys (t , keys .CryptoKeys , encryptionKey )
951
+ requireNotContainsKeys (t , keys .CryptoKeys , signingKey )
952
+
953
+ keys , err = proxy .SDKClient .CryptoKeys (ctx , codersdk .CryptoKeyFeatureWorkspaceAppsToken )
954
+ require .NoError (t , err )
955
+ require .NotEmpty (t , keys )
956
+ requireContainsKeys (t , keys .CryptoKeys , signingKey )
957
+ requireNotContainsKeys (t , keys .CryptoKeys , encryptionKey )
958
+ })
959
+
960
+ t .Run ("InvalidFeature" , func (t * testing.T ) {
961
+ t .Parallel ()
962
+
963
+ ctx := testutil .Context (t , testutil .WaitMedium )
964
+ db , pubsub := dbtestutil .NewDB (t )
965
+ cclient , _ , api , _ := coderdenttest .NewWithAPI (t , & coderdenttest.Options {
966
+ Options : & coderdtest.Options {
967
+ Database : db ,
968
+ Pubsub : pubsub ,
969
+ IncludeProvisionerDaemon : true ,
970
+ },
971
+ LicenseOptions : & coderdenttest.LicenseOptions {
972
+ Features : license.Features {
973
+ codersdk .FeatureWorkspaceProxy : 1 ,
974
+ },
975
+ },
976
+ })
977
+
978
+ proxy := coderdenttest .NewWorkspaceProxyReplica (t , api , cclient , & coderdenttest.ProxyOptions {
979
+ Name : testutil .GetRandomName (t ),
980
+ })
981
+
982
+ _ , err := proxy .SDKClient .CryptoKeys (ctx , codersdk .CryptoKeyFeatureOIDCConvert )
983
+ require .Error (t , err )
984
+ var sdkErr * codersdk.Error
985
+ require .ErrorAs (t , err , & sdkErr )
986
+ require .Equal (t , http .StatusBadRequest , sdkErr .StatusCode ())
987
+ _ , err = proxy .SDKClient .CryptoKeys (ctx , codersdk .CryptoKeyFeatureTailnetResume )
988
+ require .Error (t , err )
989
+ require .ErrorAs (t , err , & sdkErr )
990
+ require .Equal (t , http .StatusBadRequest , sdkErr .StatusCode ())
991
+ _ , err = proxy .SDKClient .CryptoKeys (ctx , "invalid" )
992
+ require .Error (t , err )
993
+ require .ErrorAs (t , err , & sdkErr )
994
+ require .Equal (t , http .StatusBadRequest , sdkErr .StatusCode ())
962
995
})
963
996
964
997
t .Run ("Unauthorized" , func (t * testing.T ) {
@@ -994,6 +1027,18 @@ func TestGetCryptoKeys(t *testing.T) {
994
1027
})
995
1028
}
996
1029
1030
+ func requireNotContainsKeys (t * testing.T , keys []codersdk.CryptoKey , unexpected ... codersdk.CryptoKey ) {
1031
+ t .Helper ()
1032
+
1033
+ for _ , expectedKey := range unexpected {
1034
+ for _ , key := range keys {
1035
+ if key .Feature == expectedKey .Feature && key .Sequence == expectedKey .Sequence {
1036
+ t .Fatalf ("unexpected key %+v found" , expectedKey )
1037
+ }
1038
+ }
1039
+ }
1040
+ }
1041
+
997
1042
func requireContainsKeys (t * testing.T , keys []codersdk.CryptoKey , expected ... codersdk.CryptoKey ) {
998
1043
t .Helper ()
999
1044
0 commit comments